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?
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?