Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Übergabe von Variablen an eine andere Arbeitsmappe

Forumthread: Übergabe von Variablen an eine andere Arbeitsmappe

Übergabe von Variablen an eine andere Arbeitsmappe
04.01.2017 12:43:11
Variablen
Liebe Experten,
leider habe ich immer noch keine Lösung gefunden, daher bitte ich noch einmal um Eure Hilfe!
Problem es werden Datei X und Datei Y gestartet.
In der Datei X wird eine Variable definiert:

NameAnalysDat = ActiveWorkbook.Name      'Name der Aktuellen Datei 

Die Datei Y wird als AddInn gestartet in der sich alle Makros befinden.In einem der Makros wird der Name der Datei x benötigt.
Leider kennt das Modul der Datei Y die Variable (NamaAnalysDat)nicht.
Frage:
Was muss ich tun, damit die Datei Y die Variable aus der Datei X verwenden kann
Vielen Dank für weitere Vorschläge!
Liebe Grüße und ein gutes Neues Jahr!
Peter
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Übergabe von Variablen an eine andere Arbeitsmappe
04.01.2017 13:23:26
Variablen
Hallo Peter,
Schreib doch in Datei1 deine Variable in eine Zelle und lese den Zellwertänderung bei Start von Datei2 aus dem Tabellenblatt von Datei1 in eine Variable von Datei2.
Ansonsten siehe auch mal hier.
https://www.herber.de/forum/archiv/988to992/989005_Variable_uebergeben_an_zwei_Datei.html&sa=U&ved=0ahUKEwi435LFvKjRAhWB2SwKHXhyCMoQFggHMAE&client=internal-uds-cse&usg=AFQjCNHJQtTIG5PDZc2vXRHdMFFkir6bDA
Gruß Werner
Anzeige
Übergabe von Variablen an eine andere Arbeitsmappe
04.01.2017 14:24:49
Variablen
Hallo Werner,
danke für deine Antwort. Wahrscheinlich drehe ich mich im Kreis.
Habe beide Dateien hochgeladen.
Datei 1 - diese Datei soll die Variable aus Datei 2 verwenden.
https://www.herber.de/bbs/user/110329.xlsm
Datei 2 - In diese Datei wird Variable1 eingegeben
https://www.herber.de/bbs/user/110330.xlsm
Beim Aufruf der
Sub Test1()
Application.Run ("Datei mit Variable1!Testv"), variable1
End Sub

erhalte ich die Fehlermeldung: Laufzeitfehler 1004: Das Makro "Datei mit Variable1!Testv" kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar oder alle Makros wurden deaktiviert.
Wo liegt mein Fehler?
Die Datei "Datei mit Variable1" ist im VBA-Explorer geöffnet.
LG, Peter
Anzeige
AW: Übergabe von Variablen an eine andere Arbeitsmappe
04.01.2017 15:51:13
Variablen
Hi Peter
Deinen Aufruf wie im Forum gepostet konnte ich in keiner Datei finden, weshalb sich das Problem auch nicht rekonstruieren lässt. Aber so funktioniert es:
DateiA.xlsm
Sub Testv(variable1 As String)
ThisWorkbook.Worksheets("Tabelle1").Cells(4, 3) = variable1
End Sub
DateiB.xlsm
Sub Variable()
Dim variable1 As String
variable1 = Cells(4, 3)
Application.Run "DateiA.xlsm!Testv", variable1
End Sub

Beachte:
- Beide Dateien müssen geöffnet sein
- Ich gehe davon aus, dass die Dateinamen bekannt sind
- Die Deklaration als String passt nicht zum Beispiel (Zahl), aber ist ja nur ein Beispiel
cu
Chris
Anzeige
Übergabe von Variablen an eine andere Arbeitsmappe
04.01.2017 16:46:15
Variablen
Hallo Zusammen,
vielen Dank für eure Antworten.
Damit bin ich weitergekommen
LG, Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Übergabe von Variablen an eine andere Arbeitsmappe


Schritt-für-Schritt-Anleitung

  1. Definiere die Variable in Datei X: Öffne die erste Arbeitsmappe, in der du die Variable speichern möchtest. Füge folgenden VBA-Code in ein Modul ein:

    Dim NameAnalysDat As String
    NameAnalysDat = ActiveWorkbook.Name ' Name der aktuellen Datei
  2. Speichere die Variable in einer Zelle: Um die Variable von Datei X für Datei Y zugänglich zu machen, speichere sie in einer Zelle. Zum Beispiel in Zelle A1:

    ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1).Value = NameAnalysDat
  3. Lese die Variable in Datei Y aus: In der zweiten Arbeitsmappe (Datei Y) kannst du nun den Wert aus Zelle A1 von Datei X einlesen:

    Dim variable1 As String
    variable1 = Workbooks("DateiX.xlsm").Worksheets("Tabelle1").Cells(1, 1).Value
  4. Verwende die Variable in Datei Y: Jetzt kannst du die Variable variable1 in deiner gewünschten Funktion oder Subroutine verwenden.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn das angegebene Makro nicht gefunden wird. Stelle sicher, dass beide Dateien geöffnet sind und der Name des Makros korrekt ist.

  • Lösung: Überprüfe den Namen des Makros in Datei Y und vergewissere dich, dass du die Syntax korrekt verwendest:

    Application.Run "DateiA.xlsm!Testv", variable1
  • Fehler: Variable nicht definiert: Wenn du eine Variable verwendest, die nicht deklariert ist, kann dies zu Problemen führen.

  • Lösung: Achte darauf, dass alle Variablen vor ihrer Verwendung deklariert sind, z.B. Dim variable1 As String.


Alternative Methoden

  • Zellen als Speicherorte: Du kannst Variablen in Zellen speichern, um den Wert zwischen Arbeitsmappen zu übertragen. Dies ist eine einfache Methode, um Daten zu transferieren, ohne komplexe VBA-Programmierung.

  • Globale Variablen: Eine andere Möglichkeit ist, globale Variablen in einem Modul zu definieren, die dann in mehreren Subroutinen und Modulen verwendet werden können.

    Global NameAnalysDat As String

Praktische Beispiele

  1. Beispiel für den Transfer von Dateinamen: Wenn du den Namen der aktuellen Arbeitsmappe an eine andere Arbeitsmappe übergeben möchtest:

    ' In DateiX
    NameAnalysDat = ActiveWorkbook.Name
    ThisWorkbook.Worksheets("Tabelle1").Cells(1, 1).Value = NameAnalysDat
    
    ' In DateiY
    Dim variable1 As String
    variable1 = Workbooks("DateiX.xlsm").Worksheets("Tabelle1").Cells(1, 1).Value
    MsgBox "Der Name der Datei ist: " & variable1
  2. Verwendung in einem Makro: Im zweiten Beispiel wird die Variable direkt in einem anderen Makro genutzt:

    Sub Testv(variable1 As String)
       ThisWorkbook.Worksheets("Tabelle1").Cells(4, 3) = variable1
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang deiner Module Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden müssen. Dies hilft, Fehler zu vermeiden.

  • Modularisiere deinen Code: Halte deinen Code modular und gut strukturiert, indem du häufig verwendete Funktionen in separate Module auslagerst.

  • Nutze Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler elegant zu handhaben, z.B. mit On Error Resume Next.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Variablen zwischen den Dateien korrekt übertragen werden?
Achte darauf, dass beide Dateien geöffnet sind und alle Verweise korrekt gesetzt sind.

2. Was passiert, wenn die Arbeitsmappe nicht gefunden wird?
Wenn die Arbeitsmappe nicht geöffnet oder der Name falsch ist, wird ein Laufzeitfehler angezeigt. Stelle sicher, dass du den korrekten Namen verwendest und die Datei geöffnet ist.

3. Kann ich Variablen auch zwischen mehreren Arbeitsmappen gleichzeitig übergeben?
Ja, du kannst Variablen zwischen beliebig vielen offenen Arbeitsmappen übergeben, solange du die korrekten Referenzen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige