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

Forumthread: Dateiname als Variable VBA

Dateiname als Variable VBA
07.03.2018 14:40:05
Neumeier
Guten Tag,
ich bräuchte mal Hilfe.
Ich möchte mit einer Hauptdatei und einer Nebendatei arbeiten. Da sich der Name der Datei immer mal wieder ändert, möchte ich den Dateinamen als Variable haben.
Da ich immer zwischen den Dateien hin un her springe, möchte einen Namen den ich Ändern kann.
Ich hab so versucht, aber ich bekomme immer eine Fehlermeldung.
Habe in das Modul1 folgendes geschrieben:
Global Name_Masterdaten As Worksheet
Set Name_Masterdaten = "Masterdaten Sachnummern.xlsx"
In Modul5 ( Mein Testmodul ) habe ich folgendes versucht
Sub Test()
Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
End Sub
leider bekomme ich dann ein Fehlermeldung, und er Springt zu meiner Variable.
Vielleicht kann mir jemand helfen. Irgendwie habe ich nicht das Richtige gefunden.
Vielen Dank
Rainer
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname als Variable VBA
07.03.2018 14:48:48
Rudi
Hallo,
was soll der Unsinn? Wozu eine Variable, wenn du sie hart verdrahtest?
Set außerhalb einer Prozedur ist unzulässig. Genauso wie jegliche andere Zuweisung zu einer Variablen.
Wenn schon, dann
Public Const Name_Masterdaten As String = "Masterdaten Sachnummern.xlsx"
Gruß
Rudi
Anzeige
AW: Dateiname als Variable VBA
07.03.2018 14:50:09
Hajo_Zi
Hallo Rainer,
die Variable "Name_Masterdaten" enthält auch den Dateityp?

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Dateiname als Variable VBA
07.03.2018 14:53:36
Daniel
Hi
so wie es aussieht, mangelt es dir schon am Grundverständnis für VBA
1. du deklarierst deine Variable als Worksheet-Objekt-Variable, dann weist du ihr einen einfachen Textstring zu, verwendest aber trotzdem die Schreibweise für eine Objektzuweisung.
ebenso seltsam ist, dass du Variable als Worksheet deklarierst, aber dann einen Workbooknamen zuweist.
das deutet darauf hin, dass du dir irgenwas zusammenkopierst, ohne darüber nachzudenken, was das ganze bedeutet.
2. Wenn du Variablen haben willst, die in mehreren Makros verwendet werden können, dann muss die Deklaration in einem allgemeinen Modul oberhalb der Makros erfolgen, aber die Wertzuweisung muss innerhalb eines Makros erfolgen, idealerweise in dem Makro, welches zuerst läuft.
Nur wenn der Wert eine unveränderliche Konstante sein soll, erfolgt auch die Wertzuweisung direkt bei der Deklaration.
also:
Modul1:
Option Explicit
Public Name_Masterdaten as string
Modul 5
Sub Test1()
Name_Masterdaten = "Masterdaten_Sachnummern.xlsx"
end Sub
Sub Test2()
Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
End Sub
wobei Test1 vor Test2 laufen muss oder die Zuweisung des Wertes in Test2 erfolgen muss.
oder als Konstante:
Modul1:
Option Explicit
Public Const Name_Masterdaten as String = "Masterdaten Sachnummern.xlsx"
Modul5:
Sub Test()
Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
End Sub
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateiname als Variable in VBA nutzen


Schritt-für-Schritt-Anleitung

  1. Variable deklarieren: Um den Dateinamen als Variable in VBA zu speichern, musst du die Variable im richtigen Modul deklarieren. Öffne das Modul1 und füge folgenden Code hinzu:

    Option Explicit
    Public Name_Masterdaten As String
  2. Wert zuweisen: Weise den Dateinamen innerhalb einer Sub-Prozedur zu. Zum Beispiel:

    Sub SetFilename()
       Name_Masterdaten = "Masterdaten_Sachnummern.xlsx"
    End Sub
  3. Datei öffnen: Um die Datei mit dem variablen Dateinamen zu öffnen, erstelle eine weitere Sub-Prozedur in Modul5:

    Sub Test()
       Call SetFilename ' Stelle sicher, dass der Dateiname gesetzt ist
       Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
    End Sub
  4. Ausführen: Stelle sicher, dass die SetFilename-Sub immer vor der Test-Sub ausgeführt wird, um den Dateinamen korrekt zu setzen.


Häufige Fehler und Lösungen

  • Fehler: "Set außerhalb einer Prozedur ist unzulässig": Dieser Fehler tritt auf, wenn du versuchst, eine Zuweisung außerhalb einer Sub-Prozedur zu machen. Stelle sicher, dass alle Zuweisungen innerhalb einer Sub-Prozedur erfolgen.

  • Fehler: Variable als falscher Typ deklariert: Wenn du die Variable Name_Masterdaten als Worksheet deklarierst, aber einen Dateinamen zuweist, tritt ein Typkonflikt auf. Deklariere sie als String, um den Dateinamen korrekt zu speichern.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Konstanten, wenn du einen unveränderlichen Dateinamen brauchst. Zum Beispiel:

Public Const Name_Masterdaten As String = "Masterdaten_Sachnummern.xlsx"

Diese Methode ist nützlich, wenn du den Dateinamen nicht ändern möchtest. Du kannst dann wie gewohnt die Datei öffnen:

Sub Test()
    Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den vba dateiname in verschiedenen Szenarien nutzen kannst:

  1. Datei speichern unter variablen Namen:

    Sub SaveFile()
       Dim NewFilename As String
       NewFilename = "Neuer_Name.xlsx"
       ActiveWorkbook.SaveAs Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & NewFilename
    End Sub
  2. Dateiname auslesen und in Variable speichern:

    Sub GetFilename()
       Dim CurrentFilename As String
       CurrentFilename = ThisWorkbook.Name
       MsgBox "Der aktuelle Dateiname ist: " & CurrentFilename
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Durch die Verwendung von Option Explicit am Anfang deiner Module wird sichergestellt, dass alle Variablen deklariert sind, was Fehler vermeidet.

  • Modularisiere den Code: Halte den Code übersichtlich, indem du gemeinsam genutzte Sub-Prozeduren erstellst, die in verschiedenen Makros aufgerufen werden können.

  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinen Makros, um Laufzeitfehler elegant zu handhaben. Zum Beispiel:

    On Error Resume Next
    Workbooks.Open Filename:="\\TV-26\TV-261\322_Routenzug--RN\" & Name_Masterdaten
    If Err.Number <> 0 Then
       MsgBox "Fehler beim Öffnen der Datei: " & Err.Description
    End If
    On Error GoTo 0

FAQ: Häufige Fragen

1. Wie kann ich den Dateinamen dynamisch ändern?
Du kannst eine Eingabeaufforderung verwenden, um den Benutzer nach einem neuen Dateinamen zu fragen:

Name_Masterdaten = InputBox("Geben Sie den neuen Dateinamen ein:")

2. Was, wenn ich mehrere Dateien verwalten möchte?
In diesem Fall könntest du ein Array oder Collection verwenden, um mehrere Dateinamen zu speichern und zu verwalten.

3. Kann ich eine Datei öffnen, ohne den vollständigen Pfad anzugeben?
Ja, wenn die Datei im aktuellen Arbeitsverzeichnis liegt, kannst du nur den Dateinamen verwenden:

Workbooks.Open Filename:=Name_Masterdaten

Mit diesen Informationen solltest du in der Lage sein, den vba dateiname effektiv zu nutzen und anzupassen.

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