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

Pfad beim Öffnen als Parameter in Variable mitgeben

Forumthread: Pfad beim Öffnen als Parameter in Variable mitgeben

Pfad beim Öffnen als Parameter in Variable mitgeben
21.11.2019 08:35:04
Meissner
Hallo zusammen,
ich habe mir eine Vorlagendatei in Excel erstellt, die mir eine vorhandene CSV Datei in eine xlsm umwandelt.
Das funktioniert auch perfekt. Gestartet wird diese Umwandlung entweder mit öffnen der Vorlage oder mit einer vbs Datei.
Dabei wird die Vorlage gestartet, mehrere Makros ausgeführt, die neue Datei gepeichert und die Vorlagendatei geschlossen.
Die CSV Datei wird von einem externen Programm erzeugt und in einem Arbeitsverzeichnis abgelegt. Das ist variabel.
z.B B:\Arbeit\Instanz1 , das nächste mal ist es Instanz2 usw.
Jetzt möchte ich diesen Pfad zum importieren der CSV beim Öffnen der Vorlagendatei in einer Variablen zur Verfügung stellen.
Das Makro der Vorlagendatei wird im Workbook_Open() mit call Start (so heißt mein Makro) sofort gestartet und hier brauche ich auch den Pfad dazu.
Ich hoffe Ihr versteht mich und könnt mir einen Tipp geben.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad beim Öffnen als Parameter in Variable mitgeben
21.11.2019 08:42:16
Hajo_Zi
Variable = Application.InputBox("Ordner", "Ordner eingeben", "C:\")

AW: Pfad beim Öffnen als Parameter in Variable mitgeben
21.11.2019 08:56:22
volti
Hallo Meisner,
hier ein erweitertes Beispiel:
Dabei wird der Dateiname in einem (ggf. versteckten) Tabellenblatt abgespeichert, um ihn bei der nächsten Abfrage wieder als Vorschlag zu haben.
Natürlich könntest Du auch ohne Abfrage immer die Nummer des zuletzt abgespeicherten Dateinamens am Dateiende hochzählen.
Private Sub Workbook_Open()
 Dim Dateiname As String
 Dateiname = Sheets("Tabelle1").Range("A$1").Value
 Dateiname = Application.InputBox("Pfad", "Bitte Pfad eingeben", Dateiname)
 If Dateiname <> "" Then
   Sheets("Tabelle1").Range("A$1").Value = Dateiname
   Call Start(Dateiname)
 End If
End Sub
Sub Start(Dateiname As String)
'code.....
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Pfad beim Öffnen als Parameter in Variable mitgeben
21.11.2019 14:54:27
Meissner
Hi,
genau das mit der Abrage des Ordners möchte ich automatisieren.
Das externe Programm startet mittels der vbs das Umwandeln, also öffnet die Vorlage.
Da alles automatisch läuft, müsste der Programmaufruf irgendwie so stattfinden:
Entweder über einen CMD-Befehl
c:\.....\Program Files (x86)\Microsoft Office\....\EXCEL.EXE" Vorlage.xlsm .....
Nur so bekomme ich den Pfad zur CSV nicht.
oder über eine vbs starten:
Option Explicit
Dim xlApp , Pfad
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Pfad = "..........\Vorlage.xlsm"
xlApp.Workbooks.Open Pfad
set xlApp = nothing
Nur weiß ich nicht, ob man hier, und wenn ja, dann wie, ein Verzeichnispfad mit einbaut, der dann in Excel beim automatischen Starten zur Verfügung steht.
Vielleicht könnte man eine Variable in der Windowsumgebung erstellen, den Pfad dort reinschreiben und im Makro dann übernehmen. Aber wie das geht ?
Anzeige
AW: Pfad beim Öffnen als Parameter in Variable mitgeben
21.11.2019 18:04:07
volti
Hi,
wenn Du den Pfad von extern per Environ-Variablen aus einer VBS übergeben möchtest und dann auch von dort Excel startest, bietet sich folgendes an:
'In deiner VBS-Datei VBScript
'Set objShell = CreateObject("WScript.Shell")
'Set objEnv = objShell.Environment("USER")
'objEnv("MeinPfad") = "C:\Users"
Sub Workbook_Open()
'Mit Environ-Variablen
  Set objShell = CreateObject("WScript.Shell")
  Set objEnv = objShell.Environment("USER")
  MsgBox objEnv("MeinPfad")
End Sub

Weitere Möglichkeit ist, über eine Inidatei im Temp-Verzeichnis zu arbeiten, wo Du den Pfad reinschreibst und ihn in Excel wieder ausliest.
Stichwort: GetPrivateProfileString
Oder Du übergibst einen weiteren Parameter beim Excelaufruf mit dem Parameter /e
Stichwort zum Googlen: GetCommandLine
viele Grüße
Karl-Heinz
Anzeige
AW: Pfad beim Öffnen als Parameter in Variable mitgeben
22.11.2019 07:29:48
Meissner
Hi Volti,
vielen Dank für Deinen Input, hiermit kann ich etwas anfangen.
Super!
AW: Pfad beim Öffnen als Parameter in Variable mitgeben
22.11.2019 07:57:04
volti
Schön zu lesen.
Viel Erfolg beim weiteren Tüfteln.
Gruß Karl-Heinz
;
Anzeige
Anzeige

Infobox / Tutorial

Pfadübermittlung beim Öffnen einer Excel-Vorlage


Schritt-für-Schritt-Anleitung

Um den Pfad einer CSV-Datei beim Öffnen einer Excel-Vorlage als Parameter in eine Variable zu speichern, folge diesen Schritten:

  1. Öffne deine Excel-Vorlage und wechsle in den VBA-Editor (Alt + F11).

  2. Füge ein neues Modul hinzu oder bearbeite das ThisWorkbook-Modul.

  3. Nutze das Workbook_Open-Ereignis, um den Pfad abzufragen und in einer Variable zu speichern. Beispielcode:

    Private Sub Workbook_Open()
        Dim Dateiname As String
        Dateiname = Application.InputBox("Pfad", "Bitte Pfad eingeben", "C:\")
        If Dateiname <> "" Then
            ' Hier kannst du das Makro aufrufen und den Pfad übergeben
            Call Start(Dateiname)
        End If
    End Sub
    
    Sub Start(Dateiname As String)
        ' Code zur Verarbeitung der CSV-Datei
    End Sub
  4. Speichere die Änderungen und schließe den VBA-Editor.

  5. Teste die Vorlage, um sicherzustellen, dass der Pfad korrekt abgefragt und verwendet wird.


Häufige Fehler und Lösungen

  • Fehler: Die Eingabeaufforderung wird nicht angezeigt.

    • Lösung: Stelle sicher, dass du das Workbook_Open-Ereignis korrekt implementiert hast und der Code aktiv ist.
  • Fehler: Der übergebene Pfad ist ungültig.

    • Lösung: Überprüfe die Eingabe des Benutzers und implementiere eventuell eine Validierung.
  • Fehler: Das Makro wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass die Makros in den Excel-Einstellungen aktiviert sind.

Alternative Methoden

Wenn du den Pfad effizienter übergeben möchtest, kannst du auch folgende Methoden in Betracht ziehen:

  1. VBS-Skript zur Übergabe des Parameters:

    • Erstelle ein VBS-Skript, das Excel mit dem gewünschten Pfad öffnet.
    • Beispiel:
    Dim xlApp, Pfad
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    Pfad = "C:\Pfad\zur\Vorlage.xlsm"  ' Hier den Pfad anpassen
    xlApp.Workbooks.Open Pfad
    Set xlApp = Nothing
  2. Umgebungsvariablen verwenden:

    • Du kannst Umgebungsvariablen in deinem VBS-Skript setzen und in Excel darauf zugreifen.

Praktische Beispiele

Hier ist ein Beispiel wie du mit Umgebungsvariablen arbeiten kannst:

Set objShell = CreateObject("WScript.Shell")
Set objEnv = objShell.Environment("USER")
objEnv("MeinPfad") = "C:\Users\MeinBenutzer\Documents"

In Excel kannst du dann den Pfad wie folgt abrufen:

Private Sub Workbook_Open()
    Dim Pfad As String
    Pfad = Environ("MeinPfad")
    MsgBox "Der gespeicherte Pfad ist: " & Pfad
End Sub

Tipps für Profis

  • Versteckte Tabellenblätter nutzen: Du kannst den Pfad in einem versteckten Tabellenblatt speichern, um ihn bei der nächsten Verwendung vorzuschlagen.

  • Fehlerbehandlung implementieren: Verwende On Error Resume Next und On Error GoTo 0, um Fehler beim Zugriff auf den Pfad besser zu handhaben.

  • Dokumentation der Variablen: Halte fest, welche Umgebungsvariablen oder Parameter du verwendest, um die Wartung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Pfad gültig ist?
Du kannst eine Funktion schreiben, die überprüft, ob der angegebene Pfad existiert, bevor du ihn verwendest.

2. Kann ich mehrere Parameter übergeben?
Ja, du kannst zusätzliche Parameter in der VBS-Datei definieren und diese dann in Excel verarbeiten.

3. Was passiert, wenn der Benutzer keinen Pfad eingibt?
Du kannst eine Standardvariable setzen oder eine Fehlermeldung anzeigen, wenn der Benutzer die Eingabe abbricht.

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