gestern in einer Testdatei einen Code zusammengeschrieben, der auf eine andere Datei im Netzwerk zugreift und aus dieser Daten ausliest/speichert.
Dazu bin ich den Umweg gegangen, das Tabellenblatt erst als neues Blatt einzufügen.
Soweit so gut, so stolz :)
Heute an der eigentlichen Datei gearbeitet, wobei ich die Parameter nun in einen eigenen Tab/Arbeitsmappe ("Parameter") geschrieben habe.
Nun spuckt der Code aber immer Fehler aus. (Laufzeitfehler '1004': Wir konnten '' nicht finden. Wurde das Objekt vielleicht verschoben, umbenannt oder gelöscht?)
Debugger markiert: Workbooks.Open Filename:=Pathname & Filename 'öffnet die Datei.
-> Via Messagebox geprüft ob die Werte Pfad, Name... richtig eingelesen wurden (waren leer, vermutlich noch aus Tabellenblatt 1, wo diese leer sind 'geprüft indem ich dort etwas eingetragen habe, in der Tat!)
Also habe ich versucht direkt auf die Zellen zuzugreifen: Pathname = Worksheets("Parameter").Cells(3, 2).Value 'Pfad
klappt (hatte dort ein " " um Parameter nicht drin)
MsgBox eingefügt, um zu sehen wie weit ich komme.
MsgBox erscheint im neu aktivierten Parametertab
Interessant:
Sheets("Parameter").Select
Range("A1").Select
führt letzteres zu einem Fehler:
Laufzeitfehler '1004': Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
Lange Rede kurzer Sinn, da ich viel vorhabe, möchte ich gerne herausfinden was da krankt....
Der gleiche Code klappt wenn der Button schon im richtigen Tab ist.
Ich habe teilweise fast das Gefühl, dass der Code gleichzeitig ausgeführt wird und so der hintere Teil ausgeführt wird, bevor das neue Arbeitsblatt aktiv ist.....
(ist auch deutlich schneller obwohl es sogar auf eine Netzwerkdatei geht, als mein neuer Laptop wo es nur zu C muss)
Tausend Dank für Rat, freue mich zu lernen :)
Grüße Martin
p.s. gespeichert als Tagesprogramm.xlsm und die Datei die augerufen werden soll Datenbank.xlsx
Ich nutze hier "Microsoft Office Home and Business 2016"
Excel Version 2012 (Build 13530.20316 Klick-und-Los)
Private Sub DBalsTab_Click() 'Datenbank als neuen Tab einfügen
'Importiert ein Tabellenblatt
Sheets("Parameter").Select
'Range("A1").Select
Dim Pathname As String
Dim Filename As String
Dim Tabname As String
Dim ControlFile As String
ControlFile = ActiveWorkbook.Name 'Name der Steuerdatei/Ausführungsdatei
MsgBox ControlFile
Pathname = Range("B3").Value 'Dateiname
'Pathname = Worksheets("Parameter").Cells(3, 2).Value 'Pfad
Filename = Range("B4").Value 'Dateiname
Tabname = Range("B5").Value 'Tabname der Datenbank
Workbooks.Open Filename:=Pathname & Filename 'öffnet die Datei
ActiveSheet.Name = Tabname
Sheets(Tabname).Copy After:=Workbooks(ControlFile).Sheets(2)
Windows(Filename).Activate
' Schreibt in die Datenbanktabelle DIREKT
' Hier bei Bedarf Code
ActiveWorkbook.Close SaveChanges:=False 'Schliesst die Datei Datenbank und speichert diese _
_
ggf
Windows(ControlFile).Activate
Sheets("Tabelle1").Select
End Sub