Microsoft Excel

Herbers Excel/VBA-Archiv

Workbook dynamisch ansprechen

Betrifft: Workbook dynamisch ansprechen von: Dennis
Geschrieben am: 05.11.2020 15:02:21

Mahlzeit zusammen,

Ich habe eine Datei, in der ich aus anderen Arbeitsmappen(Workbooks) Sachen einlesen möchte...

Ich gebe in einer Inputbox, die KW ein, welche ich haben möchte.

VBA durchsucht den Pfad und öffnet mir die diese gesucht Datei ("KW 43.xlsm") und schreibt den Namen in die Zelle Workbooks("Kontaktliste.xlsm").Sheets("Liste").Range("a1") ("KW 43.xlsm")

in meinem Makro würde ich jetzt gerne mit der Variable arbeiten:

Sub Datenkopieren()

Dim kl As Workbook 'Datei zum Einlesen "Kontaktliste"
Dim pp As Workbook 'variabler Dateiname zum Auslesen z.B. "KW 43.xlsm")

Set kl = ThisWorkbook
Set pp = Workbooks("Kontaktliste.xlsm").Sheets("Liste").Range("a1")

'Hier zum Testen ob es richtig angesprochen wird

kl.Sheets("Liste").Range("B2") = "Fuck"



pp.Sheets("Schicht 1").Range("B7:B16").Select 'MO A1

Kann mir da einer weiter helfen... Steh aufm Schlauch =/

Betrifft: AW: Workbook dynamisch ansprechen
von: ChrisL
Geschrieben am: 05.11.2020 18:11:24

Hi Dennis

Hierarchie:
1. Application (Anwendung)
2. Workbook (Arbeitsmappe)
3. Worksheet/Sheet (Tabellenblatt/Blatt)
4. Range (Bereich)

Einer Workbook-Variable kannst du keine Range übergeben.
Dim kl As Workbook
Dim pp As Workbook

Dim strName As String
strName = "KW 43.xlsm" ' kann auch strName=inputbox("blabla") sein

Set kl = ThisWorkbook
Set pp = Workbooks.Open("C:\Pfad\" & strName)

kl.Sheets("Liste").Range("a1") = pp.Name
pp.Sheets("Schicht 1").Range("B7:B16").Select 
cu
Chris

Betrifft: AW: Workbook dynamisch ansprechen
von: Dennis
Geschrieben am: 06.11.2020 08:37:55

Okay...

Mein Problem jetzt aber ist noch, dass ich den Pfad nicht kenne... bzw. C:\BLABLA\Januar\ , \Februar\ usw...

Ausgeben lassen, kann ich mir den z.B. in einer Zelle von vorherigem Makro in dem er die Datei sucht...

" Workbooks("Kontaktliste.xlsm").Sheets("Liste").Range("a2") = DirToSearch & "\" "


Die Datei ist ja bereits schon offen und in der Taskleiste auch Sichtbar.
Ich habe auch schon versucht mit "Windows.activate" etc, was mich aber auch nicht vorran brachte =/

Betrifft: AW: Workbook dynamisch ansprechen
von: ChrisL
Geschrieben am: 06.11.2020 11:35:49

Hi Dennis

Wenn die Datei bereits offen ist, dann musst du die Datei natürlich nicht mehr öffnen.

Set pp = Workbooks(strName)

cu
Chris

Betrifft: AW: Workbook dynamisch ansprechen
von: Dennis
Geschrieben am: 06.11.2020 11:42:57

Hi,

Ich habe es in der zwischenzeit weiter probiert und nun so hinbekommen...
Sub Datenkopieren()

Dim pfad As String


Set kl = ThisWorkbook
pfad = kl.Sheets("Liste").Range("a2")


Set pp = Workbooks.Open(pfad)
Set liste = kl.Worksheets("Liste")
Set S1 = pp.Sheets("Schicht 1")
Set S2 = pp.Sheets("Schicht 2")
Set S3 = pp.Sheets("Schicht 3")


 liste.Range("B7:B16").Value = S1.Range("B7:B16").Value

Ich danke dir für die Hilfe und unterstützung..

Ich werde das noch ausprobieren am Montag, da ich bei der Variante jetzt eben die erneute Öffnung der Datei abfragen müsste. Da wäre dein Ansatz jetzt etwas einfacher :) Aber es funktioniert schon mal *thumbs up


PS: Ähm ich müsste das also so ändern?
 
pfad = kl.Sheets("Liste").Range("a2")

set pp = Workbooks(pfad)
Charmantes Wochenende

Beiträge aus dem Excel-Forum zum Thema "Workbook dynamisch ansprechen"