Hallo,
WB2 ist aus der rufenden Tabelle. Die damit geöffnete Tabelle kennt das Objekt WB2 nicht. Könnte das aus der aufgerufenen zweiten Tabelle irgendwie abgefragt werden?
Das verstehe ich nicht so richtig. Ich gehe davon aus, dass alle Befehle in einem Makro sind. Damit bleibt das Objekt wb2 bestehen. Klar kennt die durch das Makro geöffnete Datei das Objekt wb2 nicht, aber es wird doch auch gar kein Code ausgeführt, der in dieser Datei steht?
In der Dokumentation der Methode Workbook.SaveAs finde ich es zwar nicht, doch meiner Erfahrung nach verweist die Variable wb2 nach dem ausführen dieser Zeile:
wb2.SaveAs "C:\test.xlsx", fileformat:=51
auf die Datei C:\test.xlsx. Ist das nicht das, was du willst?
Sorry, ich scheine dich nicht zu verstehen, kannst du etwas präzieser erklären, was passiert und was passieren soll und vielleicht einen zusammenhängenden Code posten.
Ich habe diesen Code nicht einfach so dahergeschrieben, er ist getestet:
Sub test()
Const newFilename As String = "c:\tmp\delete"
Const theFilename As String = "c:\tmp\sofortloschen.xlsx"
Const Jahr1 As String = "2018"
Dim xlApp As Application
Set xlApp = Application
Dim Formel As String
Dim wb2 As Workbook
Set wb2 = xlApp.Workbooks.Open(theFilename, False, False)
Debug.Print wb2.FullName ' ergibt: c:\tmp\sofortloschen.xlsx
wb2.SaveAs newFilename, FileFormat:=51
Debug.Print wb2.FullName ' ergibt: c:\tmp\delete.xlsx
Formel = "=SUMIF(C[-5]," & Chr(34) & Jahr1 & Chr(34) & ",C)"
wb2.Worksheets(2).Range("J10").FormulaR1C1 = Formel 'evtl. falsches Tabellenblatt
With wb2.Worksheets.Item(2).Columns("D")
.ColumnWidth = 10
End With
wb2.Worksheets(2).Rows(10).EntireRow.Insert 'evtl. falsches Tabellenblatt
End Sub
Grüße, Ulrich
|