Excel 2k und Per MakroBlatt aus Datei importieren?

Hallo zusammen,
mein kleines Programm:

Option Explicit
Dim Temp1$, Temp2$

Sub AktivesBlatt(BlattName$)
Dim Sh As Worksheet
’ Prüfen ob Blatt vorhanden
For Each Sh In Worksheets
If InStr(Sh.Name, BlattName) > 0 Then
’ Wenn vorhanden dann auswählen
Sh.Select
Exit Sub
End If
Next Sh
’ Wenn nicht dann erzeugen
Worksheets.Add.Name = BlattName
Worksheets(BlattName).Select
Worksheets(BlattName).Move After:=Worksheets(„Config“)
End Sub

Sub ImportBlatt(QuellPfad$, Datei$, Blatt$)
Temp1 = „CopyFile.xls“ 'Worksheets.Select
Temp2 = „Ziel“ ’ Sheets.Select
’ Quelle Öffnen
Workbooks.Open Filename:=QuellPfad$ & Datei$
Sheets(Blatt).Select
’ Quelle kopieren
Cells.Select
Selection.Copy
’ Ziel Aktivieren
Windows(Temp1).Activate
AktivesBlatt („DatenImport“)
’ Sheets(„DatenImport“).Select
Cells.Select
’ Daten Einfügen
ActiveSheet.Paste
Sheets(Temp2).Activate
End Sub

Sub Main()
ImportBlatt „C:\Temp“, „test40.xls“, „Test2“
End Sub

liefert in der Zeile ’ ActiveSheet.Paste’ den Fehler:
Laufzeitfehler ‚1004‘:
Paste-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.

Komischer weise nur, wenn das Sheet „DateiImport“ erst angelegt werden muss.

Ist das der Mikrosoft Bug?
Was kann ich ändern, damit es läuft?

Danke
Piecha

Hi Peter,

diese Rumhüpferei mit Select und Activate verwirrt.
Stelle dich mal mit dem Cursor in den Code und teste ihn mit F8 im Einzelschrittmodus, anzunehmenderweise bist du bei Paste im falschen Blatt o.ä.

Probier’s mal so als ungetesteten Ansatz:

Sub ImportBlatt(QuellPfad$, Datei$, Blatt$)
Dim wsQ As Worksheet, wsQ As Worksheet
Workbooks.Open Filename:=QuellPfad$ & Datei$
Set wsQ = Workbooks(QuellPfad & Datei).Worksheets(Blatt)
AktivesBlatt („DatenImport“)
Set wsZ = Workbooks(„CopyFile.xls“).Worksheets(„Datenimport“)
wsQ.UsedRange.Copy Destination:=wsZ.Range(„A1“)
wsQ.Close
End Sub

Gruß
Reinhard

Option Explicit
Dim Temp1$, Temp2$

Sub AktivesBlatt(BlattName$)
Dim Sh As Worksheet
’ Prüfen ob Blatt vorhanden
For Each Sh In Worksheets
If InStr(Sh.Name, BlattName) > 0 Then
’ Wenn vorhanden dann auswählen
Sh.Select
Exit Sub
End If
Next Sh
’ Wenn nicht dann erzeugen
Worksheets.Add.Name = BlattName
Worksheets(BlattName).Select
Worksheets(BlattName).Move After:=Worksheets(„Config“)
End Sub

Sub ImportBlatt(QuellPfad$, Datei$, Blatt$)
Temp1 = „CopyFile.xls“ 'Worksheets.Select
Temp2 = „Ziel“ ’ Sheets.Select
’ Quelle Öffnen
Workbooks.Open Filename:=QuellPfad$ & Datei$
Sheets(Blatt).Select
’ Quelle kopieren
Cells.Select
Selection.Copy
’ Ziel Aktivieren
Windows(Temp1).Activate
AktivesBlatt („DatenImport“)
’ Sheets(„DatenImport“).Select
Cells.Select
’ Daten Einfügen
ActiveSheet.Paste
Sheets(Temp2).Activate
End Sub

Sub Main()
ImportBlatt „C:\Temp“, „test40.xls“, „Test2“
End Sub

liefert in der Zeile ’ ActiveSheet.Paste’ den Fehler:
Laufzeitfehler ‚1004‘:
Paste-Methode des Worksheet-Objektes konnte nicht ausgeführt
werden.

Komischer weise nur, wenn das Sheet „DateiImport“ erst
angelegt werden muss.

Ist das der Mikrosoft Bug?
Was kann ich ändern, damit es läuft?

Danke
Piecha