Supportnet / Forum / Tabellenkalkulation
VBA Excel Makro 97 nach 2000
Frage
Hallo,
in Version Excel 97 (Win NT) habe ich mehrere Makros geschrieben, die auch prima laufen. Es geht darum, Daten aus einer Datei in eine andere neue Datei zu übertragen.
Beispiel:
Windows(File1).Activate
Range("A1:B1").Select
Selection.Copy
Windows(File2).Activate
Range("A1:B1").Select
ActiveSheet.Paste
In Excel 2000 funktioniert Windows(File1).Activate nicht.
Laufzeitfehler 9: Index außerhalb des gültigen Bereichs.
Wer kann mir einen Tip geben? Ich stehe auf der Leitung.
Gruß
Günter
Antwort 1 von _gau_
Hi,
schreib mal
Application.Windows("File").Activate
[gau]
schreib mal
Application.Windows("File").Activate
[gau]
Antwort 2 von Guenter
Hallo nochmals,
mittlerweile habe ich mein Problem lösen können. Ich habe ein Makro aufgezeichnet, das diese Aktionen, die ich oben beschrieben habe, ausführt.
Dabei wurde der Filename File1 immer mit der Erweiterung .xls angegeben. Das hatte ich nicht gebraucht bei Excel 97. Warum auch immer, ist egal. Hauptsache es läuft jetzt wieder.
Günter
mittlerweile habe ich mein Problem lösen können. Ich habe ein Makro aufgezeichnet, das diese Aktionen, die ich oben beschrieben habe, ausführt.
Dabei wurde der Filename File1 immer mit der Erweiterung .xls angegeben. Das hatte ich nicht gebraucht bei Excel 97. Warum auch immer, ist egal. Hauptsache es läuft jetzt wieder.
Günter
Antwort 3 von Guenter
Hallo [gau] (Steffen),
vielen Dank für Dein Posting, das ich erst gelesen habe, nachdem ich selbst geantwortet hatte.
Application.Windows("File").Activate
würde auch Sinn machen, funktioniert aber nicht bei mir. Hätte mir auch besser gefallen, als immer .xls mit anzugeben. Wie gesagt, mit der Extension läuft es.
Nochmals Danke
Günter
vielen Dank für Dein Posting, das ich erst gelesen habe, nachdem ich selbst geantwortet hatte.
Application.Windows("File").Activate
würde auch Sinn machen, funktioniert aber nicht bei mir. Hätte mir auch besser gefallen, als immer .xls mit anzugeben. Wie gesagt, mit der Extension läuft es.
Nochmals Danke
Günter
Antwort 4 von _gau_
Ja, stimmt. Ob nun mit Application oder ohne, es geht nur mit Dateierweiterung.
Ich hab das Problem gar nicht so mitbekommen, weil ich sowieso den vollen Dateinamen genommen habe. Wahrscheinlich, weil ich nie so richtig mit Excel97 gearbeitet habe ;-)
Steffen
Ich hab das Problem gar nicht so mitbekommen, weil ich sowieso den vollen Dateinamen genommen habe. Wahrscheinlich, weil ich nie so richtig mit Excel97 gearbeitet habe ;-)
Steffen
Antwort 5 von alleNeune
hallo Günter,
versuchs mal mit der Deklaration deiner Dateien, villeicht so, Du musst aber der Kiste sagen, wie deine Dateien und Tabellen heißen. z.B.
Sub Übertragen()
Dim VonDatei, NachDatei As Object
Set VonDatei = Workbooks("DoppelZellenlöschen.XLS").Worksheets("Tabelle2")
Set NachDatei = Workbooks("muster1.XLS").Worksheets("Tabelle 1")
Dann kannst Du schreiben:
NachDatei.Cells(1, 1).Value = VonDatei.Cells(1, 1).Value
NachDatei.Cells(1, 2).Value = VonDatei.Cells(1, 2).Value
genauso kann man schreiben:
Set VonDatei = Workbooks("DoppelZellenlöschen.XLS").Worksheets("Tabelle2").Range("B1:B19")
Set NachDatei = Workbooks("muster1.XLS").Worksheets("Tabelle 1").Range("B1:B19")
NachDatei.Value = VonDatei.Value
End Sub
Die Dateien müssen geöffnet sein, können aber auch ausgeblendet sein, so daß Du sie nicht im Fenster siehst. Das hin und her springen ist nicht nötig und auch nicht schön.
alleNeune
versuchs mal mit der Deklaration deiner Dateien, villeicht so, Du musst aber der Kiste sagen, wie deine Dateien und Tabellen heißen. z.B.
Sub Übertragen()
Dim VonDatei, NachDatei As Object
Set VonDatei = Workbooks("DoppelZellenlöschen.XLS").Worksheets("Tabelle2")
Set NachDatei = Workbooks("muster1.XLS").Worksheets("Tabelle 1")
Dann kannst Du schreiben:
NachDatei.Cells(1, 1).Value = VonDatei.Cells(1, 1).Value
NachDatei.Cells(1, 2).Value = VonDatei.Cells(1, 2).Value
genauso kann man schreiben:
Set VonDatei = Workbooks("DoppelZellenlöschen.XLS").Worksheets("Tabelle2").Range("B1:B19")
Set NachDatei = Workbooks("muster1.XLS").Worksheets("Tabelle 1").Range("B1:B19")
NachDatei.Value = VonDatei.Value
End Sub
Die Dateien müssen geöffnet sein, können aber auch ausgeblendet sein, so daß Du sie nicht im Fenster siehst. Das hin und her springen ist nicht nötig und auch nicht schön.
alleNeune

