Der genannte Fehler kann an mehreren Stellen auftreten:
Set WB = Workbooks(Datei) 'Datei geöffnet?
und an den zwei Stellen
ThisWorkbook.Sheets("Titel").Columns("A:A").Copy Destination:=WB.Sheets("Tabelle2").Columns(1) 'existieren die Blätter Titel und Tabelle2 in den jeweilgen Mappen?
Auch wenn Einzeiler manchmal ganz cool sind, mag ich sie persönlich nicht, da es schwer ist sie zu debuggen.
Deshalb, gerade (!) als Einsteiger:
Option Explicit
Public Sub Titel_click()
Dim strPath As String
Dim strFile As String
Dim strFilename As String
strPath = "N:\UBO\Koordination\Personalentwicklung\2021\"
strFile = "2021_UBO_Weiterbildung_gesamt.xlsm"
'*dirty* path check/completion
If Right$(strPath, 1) <> "\" _
Then strPath = strPath & "\"
strFilename = strPath & strFile
Dim wksSrc As Excel.Workbook
' Dim rngSrc As Excel.Range
Dim wkbDest As Excel.Workbook
Dim wksDest As Excel.Worksheet
Dim rngDest As Excel.Range
Set wksSrc = ThisWorkbook.Worksheets("Titel") 'kommt hier ein Laufzeitfehler, existiert dieses Blatt nicht
Set wkbDest = Workbooks(strFile) 'kommt hier ein Laufzeitfehler, ist die Datei nicht in der Excel-Instanz geöffnet
Set wksDest = wkbDest.Worksheets("Tabelle2") 'kommt hier ein Laufzeitfehler, existiert dieses Blatt nicht
Set rngDest = wksDest.Columns(1)
Call wksSrc.Columns(1).Copy(rngDest)
wkbDest.Save
End Sub
PS: Beachte das Excel in verschiedenen Instanzen geöffnet werden kann. Dann ist es nicht wo ohne weiteres möglich zwischen diesen Mappen aufzurufen, weil die Instanzen voneinander getrennt aggieren. Ist in Instanz A z.b. die Datei 'Kalender2020.xls' geöffnet und in Instanz B nicht, dann kann man diese per Workbooks() nur in Makros von Instanz A aufrufen (wie gesagt, unter normalen Umständen ist das so).
|