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

Forumthread: Application.run (Parameter)

Application.run (Parameter)
13.12.2017 08:43:52
MCO
Guten Morgen!
Ich versuche eine 2te Mappe zu öffnen (schreibgechützt), und ein Makro auszuführen, das einen Parameter benötigt. (VB-Projekt ebenfalls PW-geschützt)
Der Aufruf sieht wie folgt aus
With wb_Fehler.Parent
.Sheets(4).Activate
Application.Run .name & "!stüli_lesen", "46155555/110"
End With

Leider bekomme ich eine Fehlermeldung:
Das Makro 'Meine Arbeitmappe.xlsm!stüli_lesen' kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert.

Dieser Beitrag hat mir leider nicht geholfen:
https://www.herber.de/forum/archiv/184to188/185813_fehler_in_Applicationrun.html
Hat dieser Aufruf ein Problem mit Leerzeichen im Arbeitsmappennamen?
Wie kann ich das umgehen, ohne die Datei umzubenennen?
Danke schonmal fürs lesen...
Gruß, MCO
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Application.run (Parameter)
13.12.2017 09:06:03
EtoPHG
Hallo MCO,
Willst du uns tatsächlich erzählen, dass du eine Arbeitsmappe unter "Meine Arbeitmappe.xlsm" angespeichert hast? Das glaube ich nicht!
Zudem sollte man deutsche Umlaute oder andere sprachliche non-Standard Buchstaben in Makronamen, bzw. generell in VBA-Code geflissentlich vermeiden!
Gruess Hansueli
Anzeige
AW: Application.run (Parameter)
18.12.2017 07:53:27
MCO
Guten Morgen, Hansueli!
Natürlih heißt die Mappe anders, spiegelt aber in ihrer Namensgebung das Muster des Originals wieder.
Statt "geflissentlich zu vermeiden" hätte ich mir auch definierte Einschränkungen vorgestellt oder Lösungen zur Vermeidung, wie Daniel sie angeführt hat.
Dennoch danke für den Versuch deiner Hilfestellung.
Gruß, MCO
Anzeige
AW: Application.run (Parameter)
13.12.2017 09:26:45
Daniel
Hi
Ob's am Leerzeichen liegt, kannst du doch ganz einfach testen, indem du die Datei umenennst (kann ja eine Kopie sein)
Ansonsten hilft bei Sonderzeichen im Namen oft das Hochkommando
Application.run "'" & .Name & "'!Makroname"
Gruß Daniel
Anzeige
Danke!
18.12.2017 07:54:46
MCO
Hallo Daniel!
Danke für die nützlichen Hinweise!
Gruß, MCO
;
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von Application.Run mit Parametern in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne dein Excel und erstelle ein neues VBA-Makro. Dies kannst du tun, indem du die Entwicklertools aktivierst und dann auf „Visual Basic“ klickst.

  2. Makro definieren: Definiere dein Makro, das du mit Application.Run aufrufen möchtest. Achte darauf, dass der Name des Makros keine Leerzeichen oder Sonderzeichen enthält.

    Sub stüli_lesen(param As String)
       MsgBox "Parameter: " & param
    End Sub
  3. Makro aufrufen: Verwende Application.Run, um dein Makro aus einer anderen Arbeitsmappe aufzurufen. Stelle sicher, dass du den Namen der Arbeitsmappe und des Makros korrekt angibst. Wenn der Name der Arbeitsmappe Leerzeichen enthält, setze ihn in einfache Anführungszeichen.

    With wb_Fehler.Parent
       .Sheets(4).Activate
       Application.Run "'" & .Name & "'!stüli_lesen", "46155555/110"
    End With

Häufige Fehler und Lösungen

  • Fehlermeldung beim Aufruf: Wenn du die Fehlermeldung erhältst, dass das Makro nicht verfügbar ist, überprüfe, ob das Makro in der richtigen Arbeitsmappe vorhanden ist und ob alle Makros aktiviert sind.

  • Leerzeichen im Arbeitsmappennamen: Wenn der Name der Arbeitsmappe Leerzeichen enthält, musst du ihn in einfache Anführungszeichen setzen, wie im Schritt 3 der Anleitung beschrieben.

  • Sonderzeichen und Umlaute: Vermeide die Verwendung von Sonderzeichen oder Umlauten in Makronamen. Besser ist es, diese durch einfache Buchstaben oder Zahlen zu ersetzen.


Alternative Methoden

  1. Direktes Aufrufen des Makros: In manchen Fällen kannst du das Makro auch direkt aufrufen, ohne Application.Run zu verwenden, sofern du dich in der richtigen Arbeitsmappe befindest.

    Call stüli_lesen("46155555/110")
  2. Verwendung von anderen VBA-Befehlen: Statt Application.Run kannst du auch Run verwenden, was eine Abkürzung ist, jedoch weniger flexibel.


Praktische Beispiele

  • Beispiel 1: Angenommen, du hast ein Makro namens stüli_lesen, das einen Parameter benötigt. Du kannst es folgendermaßen aufrufen:

    Application.Run "'" & wb_Fehler.Name & "'!stüli_lesen", "ParameterWert"
  • Beispiel 2: Wenn du ein Makro aus einer anderen Arbeitsmappe aufrufen möchtest, kannst du dies mit Application.Run tun:

    Application.Run "AndereMappe.xlsm!stüli_lesen", "Wert"

Tipps für Profis

  • Debugging: Verwende das VBA-Debugging-Tool, um zu überprüfen, ob das Makro korrekt aufgerufen wird. Setze Haltepunkte, um die Ausführung zu beobachten.

  • Makros testen: Teste deine Makros immer in einer Kopie deiner Arbeitsmappe, um unerwünschte Änderungen zu vermeiden.

  • Dokumentation: Dokumentiere deine Makros gut, um anderen (oder dir selbst in der Zukunft) das Verständnis zu erleichtern.


FAQ: Häufige Fragen

1. Was mache ich, wenn mein Makro nicht gefunden wird?
Überprüfe, ob das Makro in der korrekten Arbeitsmappe vorhanden ist und ob du den Namen richtig eingegeben hast.

2. Wie gehe ich mit Leerzeichen im Arbeitsmappennamen um?
Setze den Arbeitsmappennamen in einfache Anführungszeichen, wie im Beispiel oben gezeigt.

3. Gibt es Einschränkungen bei den Parametern, die ich übergeben kann?
Ja, die Parameter sollten als Strings übergeben werden und dürfen keine ungültigen Zeichen enthalten.

4. Kann ich mit Application.Run auch mehrere Parameter übergeben?
Ja, du kannst mehrere Parameter übergeben, indem du sie durch Kommas trennst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige