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

Aufruf von Makro in externer Datei

Forumthread: Aufruf von Makro in externer Datei

Aufruf von Makro in externer Datei
18.07.2006 11:31:35
Makro
Moin!
Ich habe ein kleines Problem mit einem Excel Makro:
Es gibt zwei Dateien, die erste ist die Arbeitsmappe (1), die von mehreren Benutzern geöffnet wird. Die zweite ist die zentral gespeicherte Arbeitsmappe (2) mit verschiedenen Preisinformationen.
Zur Ermittlung eines Druckpreises anhand eines Druckcodes und der Anzahl wird aus der Arbeitsmappe (1) ein Makro in der Arbeitsmappe (2) über den folgenden Befehl aufgerufen:
=Mappe2.xls'!GetPrice(C25;C28)
Das klappt auch wunderbar. Problematisch wird es allerdings dann, wenn die Arbeitsmappe (2) in Excel nicht geöffnet ist. Dann erscheint als Ergebnis der Formel der Wert #Name?.
Wie bekomme ich es hin, dass das Makro auch dann ausgeführt wird, wenn die Arbeitsmappe (2) geschlossen ist?
Die Sicherheitsrichtlinien habe ich testweise auf niedrig gestellt. Daran sollte es nicht liegen.
Das betreffende Makro ist eine public static function vom Typ Variant. (Diverse Änderungen daran, waren nicht von Erfolg gekrönt)
Danke für Eure Hilfe und Gruß aus Bremen
Sebastian
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufruf von Makro in externer Datei
18.07.2006 11:34:44
Makro
Hallo Sebastian,
du kannst nur Makros von geöffneten Dateien laufen lassen.
Gruss Manfred
AW: Aufruf von Makro in externer Datei
18.07.2006 11:42:29
Makro
Danke für die Antwort, Manfred.
So etwas habe ich bereits befürchtet... Fällt Dir evtl. dazu eine Alternativlösung ein?
Wäre die Integration des Makros in Arbeitsmappe (1) bzw. die Erstellung eines Add-Ins eine Möglichkeit?
Von dem Makro aus auf Daten einer anderen Datei zugreifen, sollte doch gehen, oder?
Ich hab nicht so den Excel/VBA-Plan... mein Gebiet ist normalerweise eher VS.NET/C# ;-)
Gruß aus Bremen
Sebastian
Anzeige
AW: Aufruf von Makro in externer Datei
18.07.2006 11:59:38
Makro
Hallo Sebastian,
ich verwende dafür folgende VBA Zeile:

Sub Test
Application.Run "'DateiName2.xls'!MakroName"
End Sub

Gruss Manfred
Rückmeldung wäre nett!
AW: Aufruf von Makro in externer Datei
18.07.2006 12:11:42
Makro
Hallo Manfred,
Das habe ich auch bereits probiert... Allerdings öffnet er dabei jedes Mal die Datei Arbeitsmappe (2) und, was noch entscheidender ist: Anscheinend gibt die Funktion "Application.Run" den Rückgabewert nicht weiter. Diesen versuche ich zumindest in eine Zelle zu schreiben - wo aber nix landet.
Hier die entsprechende Code-Zeile (Parameter sind nur (valide) Test-Werte, keine verknüpften Zellen):
Cells(1, 55) = Application.Run("'Arbeitsmappe2.xls'!GetPrice", "T3", 24)
Gruß aus dem viel zu sonnigen Bremen
Sebastian
ohne Klimaanlage
Anzeige
AW: Aufruf von Makro in externer Datei
18.07.2006 12:22:31
Makro
Hallo Sebastian,
warum arbeitest du dann nicht alles in der Datei2 ab?
in etwa wie folgt:
"automatisch öffnen und starten",
"Wert aus Zelle in Variable lesen",
Variable in Tabellenblatt der Datei1 schreiben"
und am Ende die Datei2 wieder schliessen.
Gruss Manfred
Rückmeldung wäre nett!
Anzeige
AW: Aufruf von Makro in externer Datei
18.07.2006 15:01:25
Makro
Das Problem ist, dass die Datei 2 noch eine Menge mehr Daten enthält... etwa eine Tabelle, die ca. 5 MB Texte enthält (die aber für die Preiskalkulation nicht relevant ist). Das würde bedeuten, dass ständig die Daten geladen, berechnet und wieder geschlossen werden müssen.... oder kann ich auch explizit auch nur einzelne Tabellen laden? Die notwendigen Informationen sind nicht allzu gross.
Besten dank & Gruß aus Bremen
Sebastian
Anzeige
AW: Aufruf von Makro in externer Datei
18.07.2006 20:47:42
Makro
Hallo Sebastian,
......oder kann ich auch explizit auch nur einzelne Tabellen laden? Die notwendigen Informationen sind nicht allzu gross......
Nein und ja!
Du kannst nicht einzelne Tabellen öffnen, aber aus einer geschlossenen Excel-Datei
einzelne Werte auslesen, ggf. auch ganze Tabellen-"Bereiche".
Gruß
Gerd
Anzeige
AW: Aufruf von Makro in externer Datei
19.07.2006 09:06:57
Makro
Hallo Gerd,
kannst Du mir ein Stichwort geben, mit dem ich evtl. Tutorials dazu finden kann?
Danke & Gruß aus Bremen
Sebastian
AW: Aufruf von Makro in externer Datei
Makro
Hallo Sebastian,
ich brauch's selbst nicht alle Tage,
den Pfad u. den vollständigen Dateinamen musst Du als Stringvariablen deklarieren.
With ThisWorkbook.Worksheets(3).Range("A1:D3") 'Bereich anpassen
.ClearContents
.FormulaArray = "=" & "'" & strPfad & _
"[" & Dir(strDatei) & "]Tabelle1'!A1:D3" 'Bereich anpassen
.Value = .Value
End With
Gruß
Gerd
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aufruf von Makro in externer Excel-Datei


Schritt-für-Schritt-Anleitung

Um ein Makro in einer geschlossenen Excel-Datei aufzurufen, musst du einige Schritte befolgen. Hier ist eine einfache Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".

  3. Makro erstellen: Füge den folgenden Code in das Modul ein:

    Sub AufrufMakro()
       Dim strPfad As String
       Dim strDatei As String
       strPfad = "C:\DeinPfad\" ' Passe den Pfad an
       strDatei = "DateiName2.xls" ' Die Datei, die das Makro enthält
    
       Application.Run "'" & strPfad & strDatei & "'!MakroName"
    End Sub
  4. Makro testen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.


Häufige Fehler und Lösungen

Problem 1: #Name? Fehler

Wenn du die Formel =Mappe2.xls'!GetPrice(C25;C28) verwendest, kommt es zu einem #Name?-Fehler, wenn die Datei geschlossen ist.

Lösung: Du kannst das Makro nicht direkt auf eine geschlossene Datei anwenden. Stattdessen kannst du die Methode Application.Run verwenden, um das Makro in einer geöffneten Datei auszuführen.

Problem 2: Wert wird nicht zurückgegeben

Wenn die Funktion Application.Run keinen Rückgabewert liefert:

Lösung: Stelle sicher, dass du die Rückgabe korrekt in eine Zelle schreibst. Das könnte so aussehen:

Cells(1, 55) = Application.Run("'DateiName2.xls'!GetPrice", "T3", 24)

Alternative Methoden

Eine alternative Lösung besteht darin, das Makro in die Arbeitsmappe (1) zu integrieren oder ein Add-In zu erstellen. So kannst du die Funktionalität der externen Datei nutzen, ohne sie ständig öffnen zu müssen.

Hier ist ein Beispiel, wie du Daten aus einer geschlossenen Datei lesen kannst:

Sub DatenAusgeschlossenerDatei()
    Dim strPfad As String
    Dim strDatei As String
    strPfad = "C:\DeinPfad\"
    strDatei = "DateiName2.xls"

    With ThisWorkbook.Worksheets(1).Range("A1:D3") ' Bereich anpassen
        .ClearContents
        .FormulaArray = "=" & "'" & strPfad & "[" & strDatei & "]Tabelle1'!A1:D3"
        .Value = .Value
    End With
End Sub

Praktische Beispiele

Um ein Makro effizient zu nutzen, hier ein Beispiel, das aus einer geschlossenen Datei Daten ausliest:

  1. Definiere den Pfad und den Dateinamen.
  2. Verwende die FormulaArray-Eigenschaft, um Daten in die Zelle zu bringen, ohne die Datei zu öffnen.
Sub BeispielDaten()
    Dim strPfad As String
    Dim strDatei As String
    strPfad = "C:\DeinPfad\"
    strDatei = "DateiName2.xls"

    With ThisWorkbook.Worksheets(1).Range("A1")
        .Formula = "='" & strPfad & "[" & strDatei & "]Tabelle1'!A1"
    End With
End Sub

Tipps für Profis

  • Sicherheitseinstellungen prüfen: Achte darauf, dass die Makrosicherheit in Excel so eingestellt ist, dass die Ausführung von Makros erlaubt ist.
  • Fehlerbehandlung hinzufügen: Verwende On Error Resume Next, um mögliche Fehler abzufangen und zu behandeln.
  • Performance optimieren: Schließe die Arbeitsmappe nach dem Auslesen der Daten, um die Performance zu steigern.

FAQ: Häufige Fragen

1. Kann ich Daten aus einer geschlossenen Datei auslesen? Ja, du kannst spezifische Werte aus einer geschlossenen Excel-Datei auslesen, indem du die richtige Formel und den korrekten Dateipfad verwendest.

2. Wie kann ich sicherstellen, dass das Makro funktioniert? Teste das Makro regelmäßig, während du Änderungen vornimmst, und achte darauf, dass alle Pfade und Dateinamen korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige