Wie weise ich mittels VBA einer Variablen ein Workbook zu?

3 Antworten

Verstehe ich dich falsch, oder redest du davon: 

Workbooks("GeöffneteDatei").Worksheets("Tabelle1").Range("A1")

Beide Dateien sind doch schon geöffnet, oder?

Herzbube27 
Fragesteller
 22.06.2016, 11:23

Perfekt, das habe ich gemeint, Danke!

0

Soweit ich weiß gibt es einen Befehl Workbooks.Open und Workbooks.Add. Zurückgeliefert wird ein Workbook-Objekt. Dieses kannst du mit Set einer Variablen zuweisen.

Dim wb as Workbook
Set wb = Workbooks.Open(...

Ist das Workbook offen, bekommst du so Zugriff:

  Set wb = Excel.Workbooks(1)
  Set wb = Excel.Workbooks("wb.xlsm")
  wb.Worksheets(1).Range("A1").Value = "Suboptimierer"

(ungetestet)

Woher ich das weiß:Berufserfahrung – Programmierer
Oubyi, UserMod Light  22.06.2016, 15:03

...wobei man das Workbook in der Zuweisung auch direkt ansprechen kann, sieh ShitzOvran

0
Suboptimierer  22.06.2016, 15:05
@Oubyi, UserMod Light

Ja, richtig. Ich bin nur davon ausgegangen, dass der Fragesteller explizit die Variante mit Variablenzuweisung genannt bekommen haben mochte.

Ich möchte kurz gesagt zwei Variablen: Variable A ist Datei-A und Variable B ist Datei-B

0
Dim DateiA As Workbook
Dim DateiB As Workbook

Set DateiA = ActiveWorkbook ' Oder halt so, wie bei DateiB
Set DateiB = Workbooks.Open("C:\blub\MeineDatei.xls")
Oubyi, UserMod Light  22.06.2016, 15:01

Ich denke, Du hast das hier überlesen:

Jetzt möchte ich aus Datei-B eine Zelle auslesen und diese einer Variablen als Wert zuweisen

ShitzOvran hat DAS beantwortet.

0
daCypher  22.06.2016, 15:15
@Oubyi, UserMod Light

Ja, ich denke mal, das Hauptproblem war, wie man in einer Funktion auf zwei verschiedene Workbooks zugreifen kann. Wenn da noch Fragen bestanden hätten, hätte Herzbube27 bestimmt nochmal nachgefragt. Die Variante von ShitzOvran ist bei einer bereits geöffneten Excel natürlich auch möglich. Wie immer gibt es viele Wege zum Ziel.

Nur der Vollständigkeit halber: Wenn man eine Workbook-Variable hat und von dort den Wert einer Zelle in einer Variable speichern möchte, dann z.B. so:

Dim einWert As Variant

einWert = DateiB.Sheets(1).Range("A1").Value

Alternativ könnte man natürlich auch Variablen für die Sheets erstellen, z.B. so:

Dim DateiA As Workbook
Dim DateiB As Workbook Dim BlattA As Worksheet Dim BlattB As Worksheet Dim eineVariable As Variant
Set DateiA = ActiveWorkbook ' Oder halt so, wie bei DateiB Set DateiB = Workbooks.Open("C:\blub\MeineDatei.xls") Set BlattA = DateiA.Sheets(1) Set BlattB = DateiB.Sheets(1) eineVariable = BlattA.Range("A1").Value BlattB.Range("B2").Value = eineVariable
0