2017-09-27 2 views
0

Ich habe derzeit eine Master-Arbeitsmappe, mit der ich externe PDF-Formulare erstellen kann. Mein aktueller Code ermöglicht es mir, zu einem Ordner zu navigieren und eine andere Arbeitsmappe auszuwählen, aus der bestimmte Daten abgerufen und in den Master eingefügt werden können.Importieren von Daten Von einer Arbeitsmappe in eine andere

Die Daten werden aus der externen Arbeitsmappe, sheet1, kopiert und in die aktive Arbeitsmappe, sheet1, eingefügt. Der Code, mit dem ich arbeite, lautet "Für jedes Blatt". Klappt wunderbar.

Das Problem ist, dass ich ein anderes Blatt zu den Arbeitsmappen hinzugefügt habe und es einen Laufzeitfehler 1004 wirft. Ich muss es umcodieren, so kopiert es nur aus Blatt1 in der externen Arbeitsmappe und nur auf Blatt1 des Masters (aktiv).

Irgendwelche Ideen? Danke für jede Hilfe, die du weitergeben kannst.

Sub ImportData() 

Dim wb1 As Workbook 
Dim wb2 As Workbook 
Dim Sheet As Worksheet 
Dim PasteStart As Range 

Dim sh As Worksheet 
Dim strXLSFile As String, strPDFFile As String, strFolder As String 

strFolder = "H:\Company Data\Firm Files\Client Data Workbooks\Excel Data-Client Info" 

Set wb1 = ActiveWorkbook 
Set PasteStart = [Client_Data] 

FileToOpen = Application.GetOpenFilename _ 
(Title:="Please choose a Report to Parse", _ 
FileFilter:="Report Files *.xlsm (*.xlsm),") 

If FileToOpen = False Then 
    MsgBox "No File Specified.", vbExclamation, "ERROR" 
    Exit Sub 
Else 
    Set wb2 = Workbooks.Open(Filename:=FileToOpen) 
For Each Sheet In wb2.Sheets 
    With Sheet.Cells.Range("B9:B27") 
     .Copy PasteStart 
     Set PasteStart = PasteStart.Offset(.Rows.Count) 
    End With 
    Next Sheet 

End If 

wb2.Close False 

End Sub 
+0

Auf welcher Zeile genau ist der Fehler gegeben? –

+0

Hey Chris .... Der Fehler wirft auf. Kopieren PasteStart Bevor ich das zweite Arbeitsblatt hinzugefügt, funktionierte der Import gut. – BeanCounterWife

Antwort

0

Wenn Sie nur Sheet1 wollen, dann werden Sie die Schleife los.

Statt:

For Each Sheet In wb2.Sheets 
With Sheet.Cells.Range("B9:B27") 
    .Copy PasteStart 
    Set PasteStart = PasteStart.Offset(.Rows.Count) 
End With 
Next Sheet 

Versuchen:

wb2.sheets(1).range("B9:B27").copy PasteStart 

es scheint, als ob dies eine Verwendung einer Zeit ist, so dass keine Notwendigkeit, Set PasteStart = wieder. Hoffe, das hilft

+0

Danke Joshua, das hat den Trick gemacht! Und ja, es ist eine einmalige Verwendung für jeden Import mit dem Master. Hab ein fantastisches Wochenende! – BeanCounterWife

Verwandte Themen