Supportnet / Forum / Tabellenkalkulation
VBA Problem in Excel
Frage
Guten morgen zusammen!
Ich habe ein Problem mit VBA in Excel und hoffe, dass hier vielleicht jemand weiß, woran es liegt. Für die Hilfe schonmal vielen Dank!!
Jetzt zu meinem Problem:
Mit einem Programm zur Verwaltung einer Datenbank kann ich mir auf Knopfdruck eine *.csv Datei exportieren in der alle Datensätze der Datenbank stehen (ca. 30.000). Das Programm speichert diese Datei unter C:\Temp\dateiname.csv und öffnet dann die Datei mit Excel.
In einer anderen Exceldatei stehen ca. 4000 dieser Datensätze. Um jetzt die Exceldatei mit den 4000 Datensätzen zu aktualisieren (die Datenbank mit den 30.000 Datensätzen ist immer am aktuellsten) habe ich mir ein Makro in VBA geschrieben.
Exportiere ich die CSV-Datei welche dann ja auch in Excel geöffnet ist bekomme ich nach der Zeile
Set wks_alle = Workbooks("dateiname.csv").Worksheets("1")
den Laufzeitfehler '9' - Index außerhalb des gültigen Bereichs - Excel kann die Datei also nicht finden. Die Datei ist aber vorhanden UND geöffnet.
Wenn ich die CSV-Datei vorher manuell speichere, dann schließe und erneut öffne funktioniert alles problemlos!
Woran kann das liegen??
Ich hoffe jemand hat einen Rat.
Viele Grüße und einen schönen Tag!
Danke.
Nils
Antwort 1 von Seradest
Hallo Nils!
Du schreibst, dass es geht wenn du die Datei gespeichert hast. Gibt es die Datei vor dem Speichern denn auch schon? Oder wird sie erst beim Speichern auch tatsächlich angelegt?
Grüße
Carsten
Du schreibst, dass es geht wenn du die Datei gespeichert hast. Gibt es die Datei vor dem Speichern denn auch schon? Oder wird sie erst beim Speichern auch tatsächlich angelegt?
Grüße
Carsten
Antwort 2 von lagerverwalter
Hallo Carsten,
die Datei wird im Ordner C:\TEMP vom Programm angelegt, sie ist also vorhanden, ja.
Das is ja auch genau das, was ich nicht verstehe...
Die Datei ist vorhanden und geöffnet. Ich kann aber per VBA nicht darauf zugreifen. Mit ".Activate" gehts auch nicht. Hab schon viel probiert... :-(
Helft mir...
die Datei wird im Ordner C:\TEMP vom Programm angelegt, sie ist also vorhanden, ja.
Das is ja auch genau das, was ich nicht verstehe...
Die Datei ist vorhanden und geöffnet. Ich kann aber per VBA nicht darauf zugreifen. Mit ".Activate" gehts auch nicht. Hab schon viel probiert... :-(
Helft mir...
Antwort 3 von Seradest
Mmh sehr seltsam, kannst du gar nicht auf die Datei, also das Workbook zugreifen oder nur nicht auf das Tabellenblatt? Hast du das mal ausprobiert?
Grüße
Carsten
Grüße
Carsten
Antwort 4 von ChatAlligator
Wenn du nur auf dem ersten Blatt Daten liegen hast und diese in einen Ordner (der kein geschützter Systemordner ist) schreiben willst, dann versuch doch al folgende Alternative
'Löschen von Seiten und überschreiben einer Datei würden Warnmeldungen zum manuellen bestätigen senden
Application.DisplayAlerts = False 'Warnmeldungen ausschalten
For Seite = Worksheets.Count To 2 Step -1 'Jeweils letzte Seite zum löschen ansprechen ohne die erste
Worksheets(Seite).Delete
Next Seite 'Ende der Seitenschleife
ActiveWorkbook.SaveAs Filename:="C:\Temp\dateiname.CSV", FileFormat:=xlCSVMSDOS, CreateBackup:=False '"Datei speichern unter"
Application.DisplayAlerts = True 'Warnmeldungen einschalten
'Löschen von Seiten und überschreiben einer Datei würden Warnmeldungen zum manuellen bestätigen senden
Application.DisplayAlerts = False 'Warnmeldungen ausschalten
For Seite = Worksheets.Count To 2 Step -1 'Jeweils letzte Seite zum löschen ansprechen ohne die erste
Worksheets(Seite).Delete
Next Seite 'Ende der Seitenschleife
ActiveWorkbook.SaveAs Filename:="C:\Temp\dateiname.CSV", FileFormat:=xlCSVMSDOS, CreateBackup:=False '"Datei speichern unter"
Application.DisplayAlerts = True 'Warnmeldungen einschalten
Antwort 5 von lagerverwalter
Ich kann weder auf das Worksheet noch auf das Workbook zugreifen.
führt zur selben Meldung wie
@ChatAlligator: Sorry, aber ich weiß grade nicht, was du mir sagen möchtest. Ich verstehe den Zusammenhang zu meinem Problem nicht... Kannst du mir den evtl. erklären? Dankeschön.
Workbooks("dateiname.csv").Activateführt zur selben Meldung wie
Workbooks("strommasten.csv").Worksheets(1).Activate@ChatAlligator: Sorry, aber ich weiß grade nicht, was du mir sagen möchtest. Ich verstehe den Zusammenhang zu meinem Problem nicht... Kannst du mir den evtl. erklären? Dankeschön.
Antwort 6 von ChatAlligator
Zitat:
@ChatAlligator: Sorry, aber ich weiß grade nicht, was du mir sagen möchtest.
Du wollst doch ein Tabellenblatt in eine CSV-Datei exportieren.@ChatAlligator: Sorry, aber ich weiß grade nicht, was du mir sagen möchtest.
CSV-Dateien bilden nur jeweils eine Tabelle als Text ab.
Wenn die zu exportierenden Daten in einer geöffneten EXCEL-Datei vorliegen, dann ist auch kein Objekt erforderlich, das mit Set .. gefüttert werden will.
Wenn eine Excel-Datei (.xls) als CSV-Datei gespeichert werden soll, dann kann nur ein Tabellenblatt gespeichert werden. Also löscht das Makro alle weiteren Tabellenblätter (in der vordergrundig geöffneten EXCEL-Datei) mit For ... Next Schleife, damit es kein Auswahlproblem gibt - realisiert durch die .
Weiter wird "Datei speichern unter" verwendet, um die CSV-Datei aus dem einzigen Tabellenblatt zu erstellen.
Warnmeldungen wie
Zitat:
"Tabellenblatt wird endgültig gelöscht .
- Klicken sie auf 'OK' um ausgewählte Blätter wirklich zu löschen"
oder "Tabellenblatt wird endgültig gelöscht .
- Klicken sie auf 'OK' um ausgewählte Blätter wirklich zu löschen"
Zitat:
"Die Datei dateiname.CSV besteht bereits.
Möchten Sie die bestehende Datei ersetzen?"
werden anfangs abgeschaltet und später wieder angeschaltet"Die Datei dateiname.CSV besteht bereits.
Möchten Sie die bestehende Datei ersetzen?"
Antwort 7 von lagerverwalter
Zitat:
Du wollst doch ein Tabellenblatt in eine CSV-Datei exportieren.
Du wollst doch ein Tabellenblatt in eine CSV-Datei exportieren.
Nein, das wollte ich nicht ;-)
Das Problem ist ein ganz anderes. Die CSV Datei exportiere ich aus einem Programm welches auf eine Datenbank zugreift. Es wird also eine CSV Datei erstellt und automatisch in Excel geöffnet. Das Problem ist, dass ich auf diese geöffnete Datei mit VBA nicht zugreifen kann. Ich muss die Datei erst
erneut abspeichern, schließen und wieder öffnen...
Aber danke für deinen Tip, dann weiß ich das ja auch jetzt :-)
Hat noch jemand eine Idee woran es liegen könnte?

