Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Julia
entschuldige bitte meinen dummen kleinen Flüchtigkeitsfehler! Wenn du etwas mehr VBA erfahrung gesammelt hast siehst du sowas blöödes selbst, an Hand der Fehlermeldung. Es fehlt schlicht und simpel ein "s" am Ende: Workbooks(ExMappe) Excel ist das sehr penibel!!
ThisWorkbook.Worksheets("Tabelle1").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Tabelle2").Range("A6:A40").Value
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
19.03.2017, 03:01
(Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2017, 03:01 von o0Julia0o.)
o.k., dankeschön. Jetzt erhalte ich einen neuen Fehler.
Sub KopieVonExtern()
ExMappe = ThisWorkbook.Worksheets("Tabelle2").Range("D109").Value
ThisWorkbook.Worksheets("Tabelle1").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Tabelle2").Range("A6:A40").Value
End Sub
Selbst wenn ich es so mache:
Sub KopieVonExtern()
ExMappe = ThisWorkbook.Worksheets("Tabelle2").Range("D109").Value
ThisWorkbook.Worksheets("Tabelle1").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Tabelle2").Range("A6:A40").Value
End Sub
Es werden Zeile 3 und 4 gelb markiert: "Objekt erforderlich". Die Zelle D109 enthält dabei Wb1.xlsm und nicht [Wb1.xlsm]. Wenn ich in D109 [Wb1.xlsm] habe, dann werden ebenfalls Zeile 3 und 4 gelb markiert und folgende Meldung kommt: "Index außerhalb des gütligen Bereichs". Das kommt auch wenn in D109 nichts stehen habe. Ich vermute also Wb1.xlsm ist korrekt. Trotzdem funktioniert es ja nicht -> Objekt erforderlich. Dabei ist es egal, ob ich die Datei Wb1.xlsm geöffnet habe oder nicht. Und auch ob ich dort das Tabellenblatt Tabelle1 angewählt habe oder nicht. Und auch egal ob ich Test in der Hauptdatei(da wo ich den Code ausführe) angewählt habe oder nicht.
Julia :)
Registriert seit: 11.04.2014
Version(en): Office 2007
19.03.2017, 11:27
(Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2017, 11:27 von Steffl.
Bearbeitungsgrund: Hinweis auf die Func eingefügt.
)
Hallo Julia,
hast Du dir schon mal angeschaut, was dir bei ThisWorkbook.Path zurückgegeben wird? Da fehlt das \.
Code:
Sub prcHoleDaten()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
Pfad = ThisWorkbook.Path & "\" 'Die von der zu kopierenden Datei liegt stets im gleichen Verzeichnis, wie die Hauptdatei mit ""
Dateiname = Worksheets("Tabelle2").Range("D109").Text ' In D109 steht: [Wb1.xlsm] Die Datei heißt: Wb1.xlsm. Auch mit D108 probiert, wo Wb1.xlsm als Zellinhalt steht.
Blatt = "Tabelle2" ' von welcher Tabelle soll er holen?
Bereich = "A6:A40" ' aus welchem Bereich soll er holen?
Set Ziel = Worksheets("Tabelle1").Range("A6") ' in welchen Bereich soll er kopieren? Genauer gesagt: Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
'Worksheets("Tabelle1").Range("A6:A40").Value = Workbook("Tabelle2!D109").Worksheets("Tabelle2").Range("A6:A40").Value
End Sub
PS: Die Function GetDataClosedWB mußt natürlich auch in das Modul einfügen.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Julia
ich habe den Code gerade in einer Test Datei nachgestellt und noch einen dummen Fehler entdeckt. Prüfe die Richtigkeit der Tabellen bitte selbst noch einmal nach! In welcher Mappe ist Tabelle1, in welcher Mappe Tabelle2? Hier der Fehler: - Wenn ich in Tabelle1 kopieren will, und dier Datei Name in Zelle D109 steht, sollte man als Worksheet auch Tabelle1 angeben! Sonst holt man einen Leerwert aus Tabelle2 !!
Nur zum Prüfen kann man auch eine MsgBox einfügen, dann sieht man sofort welchen Wert "ExMappe" hat.
Sub KopieVonExtern()
ExMappe = ThisWorkbook.Worksheets("Tabelle1").Range("D109").Value
MsgBox ExMappe '** nur zum Testen, danach wieder löschen !!
ThisWorkbook.Worksheets("Tabelle1").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Tabelle2").Range("A6:A40").Value
End Sub
Prüfe bitte selbst noch einmal ob alle Angaben richtig stimmen, auch Zelle D109!! Was steht da drin?? Würde mich frenen wennn es jetzt klappt.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
Dein Code funktioniert jetzt Steffl! :) thx
Dankeschön Gast 123. Bei deinem Code bleibt der Fehler. Das Messagebox-Ergebnis lautet: Wb1.xlsm
Danach werden folgende beiden Zeilen gelb markiert:
Code:
ThisWorkbook.Worksheets("Tabelle1").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Tabelle2").Range("A6:A40").Value
Fehlermeldung: "Index außerhalb des gütligen Bereichs"
Habe es mal so gemacht zum Test:
Code:
Sub KopieVonExtern()
ExMappe = ThisWorkbook.Worksheets("[b]Namentabelle[/b]").Range("D109").Value
MsgBox ExMappe '** nur zum Testen, danach wieder löschen !!
ThisWorkbook.Worksheets("Hiereintabelle").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Vonhiertabelle").Range("A6:A40").Value
End Sub
Vonhiertabelle -> von hier sollen die Werte genommen werden.
Hiereintabelle -> hierhin sollen die Werte geschrieben werrden.
Namentabelle -> hier steht der Dateiname wovon die Werte genommen werden sollen
Alle Tabellen sind in beiden Dateien vorhanden.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Julia,
bei der Variante von Gast123: Hast du die Datei geöffnet wenn die Fehlermeldung kommt? Wenn nein ist es klar die muss offen sein.
Gruß Stefan
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
20.03.2017, 13:55
(Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2017, 13:55 von o0Julia0o.)
oh, hatte ich dann irgendwann vergessen mitzutesten. Dann werden aber ebenfalls die beiden Zeilen(vor End Sub) gelb markiert. Und es kommt stattdesse aber: "'Laufzeitfehler 424' Objekt erforderlich".
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Julia,
ich habe mal versucht das bei mir nachzubauen. Es hat geklappt. Die Daten wurden übernommen, wenn beide Dateien offen waren. Warum bei dir die Fehlermeldung kommt, kann man ohne die Datei nicht sagen.
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
Hast du diesen Code benutzt?
Code:
Sub KopieVonExtern()
ExMappe = ThisWorkbook.Worksheets("[b]Namentabelle[/b]").Range("D109").Value
MsgBox ExMappe '** nur zum Testen, danach wieder löschen !!
ThisWorkbook.Worksheets("Hiereintabelle").Range("A6:A40").Value = _
Workbooks(ExMappe).Worksheets("Vonhiertabelle").Range("A6:A40").Value
End Sub
Registriert seit: 11.04.2014
Version(en): Office 2007
20.03.2017, 19:39
(Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2017, 19:39 von Steffl.)
Hallo Julia,
genau den habe ich verwendet. (Natürlich ohne das b in den eckigen Klammen). Falscher Tabellennamen kann es nicht sein, da sollte eine anderer Laufzeitfehler kommen. Hast Du in der Makrodatei vielleicht noch Ereignismakros?
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o