Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: application.run + Variable übergeben

application.run + Variable übergeben
01.02.2013 09:49:16
Franz
Guten Morgen Fachleute,
ich bin gespannt auf eine Lösung, ich probier schon so lang rum, aber ich kommt nicht drauf, drum bitte ich um Eure Hilfe:
- in der personl.xls steht ein Makro, das aus verschiedenen Dateien aufgerufen werden soll, zum Einlesen von Informationen zur aufrufenden Datei:
Sub Dateinamen_Pfad_auslesen()
Dim myPath As String
Dim myName As String
Dim myNameOEnd As String
Dim myNameWithPath As String
'Pfad der aufrufenden Mappe:
myPath = ActiveWorkbook.Path & "\"
'Name der aufrufenden Mappe ohne Pfad :
myName = ActiveWorkbook.Name
'Name der aufrufenden Mappe ohne Endung :
myNameOEnd = Replace(myName, Right(myName, 4), "")
'Dateiname  mit Pfad:
myNameWithPath = myPath & myName
End Sub

- in der aufrufenden Datei sollen diese Informationen dann zur Verfügung stehen:
Sub test
Application.Run ("personl.xls!Dateinamen_Pfad_auslesen")
MsgBox myPath
End Sub

Wo und wie muss ich die Variablen deklarieren, damit das funktioniert? In der aufrufenden Datei, aber wie? Kommen die Deklarationen an die "Application.Run"-Anweisung dran? Aber wie? So wie oben geht's auf jeden Fall nicht....
Für Eure Hilfe schonmal danke im Voraus und Grüße
Franz

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: application.run + Variable übergeben
01.02.2013 09:59:39
ransi
HAllo
Wenn du das Ganze in eine Function packen würdedst, könntest du dir die Klimmzüge mit Application.Run() sparen.
Diesen 1 Zeiler in ein Modul von deiner personl.xls.
Versuch mal:
Option Explicit

Public Function Dateinamen_Pfad_auslesen()
    Dateinamen_Pfad_auslesen = ActiveWorkbook.FullName
End Function



ransi

Anzeige
AW: application.run + Variable übergeben
01.02.2013 10:10:38
Franz
Hallo Ransi,
danke, aber ich bin zu blöd und krieg's nicht hin: wie rufe ich die Funktion in der aufrufenden Datei dann auf?
Grüße
Franz

AW: application.run + Variable übergeben
01.02.2013 10:18:55
ransi
Hallo Franz
Na ganz einfach so:
Msgbox Dateinamen_Pfad_auslesen
ransi

AW: application.run + Variable übergeben
01.02.2013 11:27:13
Franz
Hallo Ransi,
(sorry, musste kurz weg, drum die Unterbrechung)
ja klar, tut mir leid, hatte nen Übertragungsfehler.
Die anderen Informationen (myPath, myNameOEnd, ....) hab ichnicht nur abgerufen, um "myNameWithPath" zusammenzusetzen, sondern ich brauche sie auch. Dann kann ich das doch so weitermachenmachen, oder:
Public Function myNameWithPath()
myNameWithPath = ActiveWorkbook.FullName
End Function
Public Function myNameOEnd()
myNameOEnd = Replace(ActiveWorkbook.Name, Right(ActiveWorkbook.Name, 4), "")
End Function

Seh ich doch richtig so, oder?
Grüße
Franz

Anzeige
AW: application.run + Variable übergeben
01.02.2013 10:00:54
haw
Hallo Franz,
in diesem Fall ist es ganz einfach, du brauchst die Variable gar nicht übergeben:
Sub Dateinamen_Pfad_auslesen()
Dim myPath As String
Dim myName As String
Dim myNameOEnd As String
Dim myNameWithPath As String
'Pfad der aufrufenden Mappe:
myPath = ActiveWorkbook.Path & "\"
'Name der aufrufenden Mappe ohne Pfad :
myName = ActiveWorkbook.Name
'Name der aufrufenden Mappe ohne Endung :
myNameOEnd = Replace(myName, Right(myName, 4), "")
'Dateiname  mit Pfad:
myNameWithPath = myPath & myName
MsgBox myPath
End Sub
Oder willst du mit dem Pfad etwas anderes tun?
Gruß
Heinz

Anzeige
AW: application.run + Variable übergeben
01.02.2013 10:03:19
Franz
Hallo Heinz,
danke. Ja ich brauch die Informationen in der aufrufenden Datei, die MsgBox hab ich nur hier in der Testdatei zum Prüfen, ob's funktioniert.
Danke und Grüße
Franz

AW: application.run + Variable übergeben
01.02.2013 10:08:14
haw
Hallo Franz,
da ist ransis Lösung wohl am besten.
Die bietet dein myNameWithPath. Für die anderen Angaben kann man das gleich machen.
Gruß
Heinz

Anzeige
AW: application.run + Variable übergeben
01.02.2013 10:15:59
Rudi
Hallo,
wozu überhaupt die Prozedur?
myNameWithPath = ActiveWorkbook.FullName
Gruß
Rudi

AW: application.run + Variable übergeben
01.02.2013 11:29:34
Franz
Hallo Rudi,
ja, Du hast recht. Ich hab mir das einfach mal aus einem anderen Zusammenhang übernommen. Stimmt schon, muss mir das Grundsätzliche mal überlegen.
Danke und Grüße
Franz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von Application.Run in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Definiere die Funktion in deiner personl.xls: Erstelle ein neues Modul und füge den folgenden Code ein, um die Dateiinformationen auszulesen.

    Option Explicit
    
    Public Function Dateinamen_Pfad_auslesen() As String
       Dateinamen_Pfad_auslesen = ActiveWorkbook.FullName
    End Function
  2. Rufe die Funktion in der aufrufenden Datei auf: In der Datei, die die Informationen benötigt, verwende diesen Code:

    Sub test()
       MsgBox Dateinamen_Pfad_auslesen
    End Sub
  3. Variablen nutzen: Wenn du zusätzliche Informationen wie myPath oder myNameOEnd benötigst, kannst du sie ebenfalls in Funktionen umwandeln:

    Public Function myPath() As String
       myPath = ActiveWorkbook.Path & "\"
    End Function
    
    Public Function myNameOEnd() As String
       myNameOEnd = Replace(ActiveWorkbook.Name, Right(ActiveWorkbook.Name, 4), "")
    End Function

Häufige Fehler und Lösungen

  • Fehler bei der Variablendeklaration: Stelle sicher, dass die Variablen in der richtigen Funktion deklariert sind. Wenn du Application.Run verwendest, müssen die Variablen global deklariert werden, wenn sie in der aufrufenden Datei benötigt werden.

  • Falscher Funktionsaufruf: Verwende MsgBox Dateinamen_Pfad_auslesen anstelle von Application.Run, wenn die Funktion sich in derselben Datei befindet.


Alternative Methoden

Wenn du die Verwendung von Application.Run vermeiden möchtest, kannst du die oben genannten Funktionen direkt aufrufen. So sparst du dir den Aufwand, Parameter übergeben zu müssen.

Ein Beispiel für eine direkte Funktion wäre:

Sub Beispiel()
    Dim pfad As String
    pfad = myPath()
    MsgBox pfad
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du alle Funktionen kombinieren kannst:

Sub AlleInformationen()
    Dim pfad As String
    Dim nameOEnd As String

    pfad = myPath()
    nameOEnd = myNameOEnd()

    MsgBox "Pfad: " & pfad & vbCrLf & "Name ohne Endung: " & nameOEnd
End Sub

Tipps für Profis

  • Nutzung von Option Explicit: Setze immer Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Verwende Module für verschiedene Funktionen: Halte deine Funktionen in verschiedenen Modulen getrennt, um die Übersichtlichkeit zu erhöhen.

  • Debugging: Nutze die Debug.Print-Anweisung, um Werte im Direktfenster zu überprüfen, ohne sie in einer MsgBox anzuzeigen.


FAQ: Häufige Fragen

1. Wie kann ich Application.Run mit Parametern verwenden?
Um application.run mit Parametern zu nutzen, musst du sicherstellen, dass die Funktion die Parameter akzeptiert. Beispiel:

Public Function BeispielMitParameter(param As String) As String
    BeispielMitParameter = "Der Parameter ist: " & param
End Function

2. Kann ich Application.Run in einer anderen Arbeitsmappe verwenden?
Ja, du kannst Application.Run verwenden, um ein Makro in einer anderen geöffneten Arbeitsmappe aufzurufen, indem du den vollständigen Namen angibst, z.B. Application.Run "AndereMappe.xlsm!MakroName".

3. Was ist der Unterschied zwischen Sub und Function in VBA?
Sub führt eine Aktion aus und gibt keinen Wert zurück, während Function einen Wert zurückgibt und in Berechnungen oder anderen Funktionen verwendet werden kann.

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