Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
728to732
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Excel-Dateien schließen

VBA Excel-Dateien schließen
Uwe
Hallo,
ich habe folgendes Problem.
Ich habe ein Basis-Tool, dass sich aus einer anderen Excel-Dateien Daten zieht.
Nun möchte ich nach Beendigung diese Datei wieder schließen. Hinweis: Die Datei hat keine feste Bezeichnung, so dass ich mit einer Variablen arbeiten muss.
Gibt es einen ähnlich Befehl wie "Windows(ThisWorkbook.Name).Activate", der z.B. alle Excel-Dateien sucht, bei denen in Zelle A1 der Begriff "Quelldatei" steht und diese anschließend schließt?
Ich hoffe, Ihr könnt mir helfen.
Gruß
Uwe

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Excel-Dateien schließen
13.02.2006 11:31:21
Josef
Hallo Uwe!
Wenn du die Datei öffnest, dann kannst du sie doch gleich einer Variabel zuweisen!
Sub uwe()
Dim objWb As Workbook

Set objWb = Workbooks.Open("dateipfad\dateiname.xls")

With objWb
  
  'deine Anweisungen
  .Close True ', oder False
End With

Set objWb = Nothing
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: VBA Excel-Dateien schließen
14.02.2006 11:13:37
Uwe
Hallo Sepp,
ich weiss nicht, wie ich dein Makro umsetzen muss und bitte dich daher um Hilfe.
Folgendes Makro habe ich als Importfunktion:
Application.Dialogs(xlDialogOpen).Show 'aktivieren des Dialoga
On Error GoTo Ende 'wenn die Datei keine "Tabelle2" hat gehe zu Ende:
Sheets("Tabelle1").Select 'Tabelle1 auswählen
Columns("A:U").Copy 'Bereich kopieren
Windows(ThisWorkbook.Name).Activate
Tabelle1.Select 'Zelle A1 aktivieren
Range("A1").Select
ActiveSheet.Paste 'in aktivierte Tabelle einfügen
Ende: ' weitermachen ab hier wenn "Error"
Hierbei bleibt die Quell-Datei offen, soll aber anschließend wieder geschlossen werden. Die Quelldatei soll nicht umbenannt werden. Es kann mehrere Quelldateien mit unterschiedlichen Namen geben.
Wie muss das Makro umgeschrieben werden, dass nur die Zieldatei nach erfolgtem Import offen bleibt.
Gruß
Uwe
Anzeige
AW: VBA Excel-Dateien schließen
14.02.2006 11:45:21
Uwe
Hallo Sepp,
ich weiss nicht, wie ich dein Makro umsetzen muss und bitte dich daher um Hilfe.
Folgendes Makro habe ich als Importfunktion:
Application.Dialogs(xlDialogOpen).Show 'aktivieren des Dialoga
On Error GoTo Ende 'wenn die Datei keine "Tabelle2" hat gehe zu Ende:
Sheets("Tabelle1").Select 'Tabelle1 auswählen
Columns("A:U").Copy 'Bereich kopieren
Windows(ThisWorkbook.Name).Activate
Tabelle1.Select 'Zelle A1 aktivieren
Range("A1").Select
ActiveSheet.Paste 'in aktivierte Tabelle einfügen
Ende: ' weitermachen ab hier wenn "Error"
Hierbei bleibt die Quell-Datei offen, soll aber anschließend wieder geschlossen werden. Die Quelldatei soll nicht umbenannt werden. Es kann mehrere Quelldateien mit unterschiedlichen Namen geben.
Wie muss das Makro umgeschrieben werden, dass nur die Zieldatei nach erfolgtem Import offen bleibt.
Gruß
Uwe
Anzeige
AW: VBA Excel-Dateien schließen
14.02.2006 16:10:19
Josef
Hallo Uwe!
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub uwe()
Dim strFile As String
Dim objWbSrc As Workbook, objShSrc As Worksheet, objShTar As Worksheet
Dim lngCalculation As Long

On Error GoTo ErrExit

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  .DisplayAlerts = False
  lngCalculation = .Calculation
  .Calculation = xlCalculationManual
  .Cursor = xlWait
End With

strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlt; *.xla)," & _
  "*.xls; *.xlt; *.xla")

If strFile = "Falsch" Then GoTo ErrExit

Set objShTar = ThisWorkbook.Tabelle1
Set objWbSrc = Workbooks.Open(strFile)
Set objShSrc = objWbSrc.Sheets("Tabelle1")

With objWbSrc
  .Columns("A:U").Copy objShTar.Range("A1")
  .Close False
End With

ErrExit:

Set objShTar = Nothing
Set objWbSrc = Nothing
Set objShSrc = Nothing

If Err.Number > 0 Then
  MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
  Err.Clear
End If

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .DisplayAlerts = True
  .Calculation = lngCalculation
  .Cursor = xlDefault
End With

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: VBA Excel-Dateien schließen
14.02.2006 21:04:15
Uwe
Hallo Sepp,
ich habe dein Makro übernommen, bekomme aber an folgender Stelle nachstehende Fehlermeldung:
438 Objekt unterstützt diese Eigenschaft oder Methode nicht.
If strFile = "FALSCH" Then GoTo ErrExit
Set objShTar = ThisWorkbook.Tabelle1
Set objWbSrc = Workbooks.Open(strFile) 'ab hier werden die weiteren Befehle übersprungen
Set objShSrc = objWbSrc.Sheets("Tabelle1") 'hier steht:objShSrc = objWbSrc.Sheets("Tabelle1") =
With objWbSrc
.Columns("A:U").Copy objShTar.Range("A1")'hier steht:objShSrc = objShTar.Range("A1") =
.Close False
End With 'hiernach setzt das Makro wieder ein
strFile zeigt zwar die zu öffnende Datei an, öffnet sie aber nicht.
Ich geb's zu, mit den Variablen habe ich so meine Probleme.
Gruß
Uwe
Anzeige
AW: VBA Excel-Dateien schließen
14.02.2006 21:34:59
Josef
Hallo Uwe!
Da hab ich wohl ein paar Wechstaben verbuchselt, ähhh Buchstaben verwechselt;-)
Sub uwe()
Dim strFile As String
Dim objWbSrc As Workbook, objShSrc As Worksheet, objShTar As Worksheet
Dim lngCalculation As Long

On Error GoTo ErrExit

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  .DisplayAlerts = False
  lngCalculation = .Calculation
  .Calculation = xlCalculationManual
  .Cursor = xlWait
End With

strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlt; *.xla)," & _
  "*.xls; *.xlt; *.xla")

If strFile = "Falsch" Then GoTo ErrExit

Set objShTar = ThisWorkbook.Sheets("Tabelle1")
Set objWbSrc = Workbooks.Open(strFile)
Set objShSrc = objWbSrc.Sheets("Tabelle1")

objShSrc.Columns("A:U").Copy objShTar.Range("A1")
objWbSrc.Close False


ErrExit:

Set objShTar = Nothing
Set objWbSrc = Nothing
Set objShSrc = Nothing

If Err.Number > 0 Then
  MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
  Err.Clear
End If

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .DisplayAlerts = True
  .Calculation = lngCalculation
  .Cursor = xlDefault
End With

End Sub



'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: VBA Excel-Dateien schließen
15.02.2006 01:27:02
Uwe
Hallo Sepp,
vielen Dank. Es hat nach mehrmaligen Fehlversuchen (lag nicht an deiner Programmierung) geklappt.
Bei mir hat sich das automatische Berechnen in manuelles Berechnen umgestellt, so dass wichtige Funktionen nicht mehr korrekt durchliefen. Aus diesem Grund funktionierte u.a. das Makro nicht.
Gruß
Uwe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige