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

Pfad in einem Makro ändern

Forumthread: Pfad in einem Makro ändern

Pfad in einem Makro ändern
28.11.2015 11:35:10
parza

Hallo, dank eurer Hilfe habe ich ein super funktierendes Excel-Macro um alle Dateien in einem beliebigen Ordner mit Blattschutz zu versehen bzw. aufzuheben. Nun meiner Frage: Bisher muss man den Ort, wo das Makro suchen soll, direkt in den code schreiben. Da ich nicht möchte, das die Mitarbeiter direkt ins Makro schreiben, wäre es schön, wenn man dies über einen Mini-Explorerfenster auswählen könnte und dies direkt ins Makro eingetragen wird. D.h. Der Pfad in strParth soll entsprechend angepasst werden.
Danke parza
Das wäre das Makro
Option Explicit

Sub schutzAus()
Dim objWB As Workbook, objSh As Worksheet
Dim strFile As String, strPath As String
On Error GoTo ErrorHandler
Static CalculationMode As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
CalculationMode = .Calculation
.Calculation = xlManual
.DisplayAlerts = False
End With
strPath = "E:\Forum" 'Verzeichnis - Anpassen!
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strFile = Dir(strPath & "*.xls", vbNormal)
Do While strFile <> ""
Set objWB = Workbooks.Open(strPath & strFile)
For Each objSh In objWB.Worksheets
objSh.Unprotect
Next
objWB.Close True
strFile = Dir
Loop
ErrorHandler:
With Err
If .Number <> 0 Then
MsgBox "Fehler in Prozedur:" & vbTab & "'schutzAus'" & vbLf & String(60, "_") & _
vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
"Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
.Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
"VBA - Fehler in Prozedur - schutzAus"
.Clear
End If
End With
On Error GoTo 0
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalculationMode
.DisplayAlerts = True
.StatusBar = False
End With
Set objWB = Nothing
Set objSh = Nothing
End Sub

Sub schutzEin()
Dim objWB As Workbook, objSh As Worksheet
Dim strFile As String, strPath As String
On Error GoTo ErrorHandler
Static CalculationMode As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
CalculationMode = .Calculation
.Calculation = xlManual
.DisplayAlerts = False
End With
strPath = "E:\Forum" 'Verzeichnis - Anpassen!
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
strFile = Dir(strPath & "*.xls", vbNormal)
Do While strFile <> ""
Set objWB = Workbooks.Open(strPath & strFile)
For Each objSh In objWB.Worksheets
objSh.Protect
Next
objWB.Close True
strFile = Dir
Loop
ErrorHandler:
With Err
If .Number <> 0 Then
MsgBox "Fehler in Prozedur:" & vbTab & "'schutzEin'" & vbLf & String(60, "_") & _
vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
"Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
.Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
"VBA - Fehler in Prozedur - schutzEin"
.Clear
End If
End With
On Error GoTo 0
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalculationMode
.DisplayAlerts = True
.StatusBar = False
End With
Set objWB = Nothing
Set objSh = Nothing
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Pfad in einem Makro ändern
28.11.2015 11:56:20
Matthias
Hallo Parza,
das würde so funktionieren:
Dim objShell As Object, objFolder As Object
Const strStartPath As String = "D:\Eigene Dateien" '
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0&, "Ordner wählen", _
&H4000, strStartPath)
If Not objFolder Is Nothing Then
strPath = objFolder.Self.Path
Else
' deine Aktionen wenn Abbrechen gewählt
End If
Dies ersetzt dann deine Zeile "strPath = "E:\Forum" 'Verzeichnis - Anpassen!".
lg Matthias

Anzeige
AW: Pfad in einem Makro ändern
28.11.2015 11:58:01
Hajo_Zi

Function GetAOrdner2() As String
If BoFehler Then On Error GoTo Errorhandler1
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
GetAOrdner2 = .SelectedItems(1) & "\"
Else
GetAOrdner2 = ""
End If
End With
Exit Function
'Errorhandler1:
'    Fehlerbehandlung 1, 167
End Function
Sub Start()
MsgBox GetAOrdner2
End Sub

Anzeige
AW: Pfad in einem Makro ändern
29.11.2015 09:39:08
parza
Super, vielen Dank.
Ist deine Lösung bei jedem Makro anwendbar, bei denen eine entsprechende Pfadeingabe gewünscht ist?

;
Anzeige

Infobox / Tutorial

Pfadänderung in einem Excel-Makro leicht gemacht


Schritt-für-Schritt-Anleitung

Um den Pfad in Deinem Excel-Makro zu ändern, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Makro öffnen: Öffne Dein Excel-Dokument und gehe zu dem Makro, das Du anpassen möchtest.

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

  3. Code anpassen: Ersetze die Zeile, die den Pfad definiert, durch den folgenden Code:

    Dim objShell As Object, objFolder As Object
    Const strStartPath As String = "D:\Eigene Dateien" '
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(0&, "Ordner wählen", _
    &H4000, strStartPath)
    If Not objFolder Is Nothing Then
        strPath = objFolder.Self.Path
    Else
        ' deine Aktionen wenn Abbrechen gewählt
    End If
  4. Speichern: Schließe den VBA-Editor und speichere Deine Änderungen im Excel-Dokument.

  5. Makro testen: Führe das Makro aus, um sicherzustellen, dass es nun den ausgewählten Pfad verwendet.


Häufige Fehler und Lösungen

  • Fehler: "Pfad ungültig"

    • Lösung: Überprüfe, ob der gewählte Pfad tatsächlich existiert und ob Du die erforderlichen Berechtigungen hast.
  • Fehler: "Makro nicht gefunden"

    • Lösung: Stelle sicher, dass Du das Makro korrekt gespeichert hast und dass es im richtigen Modul verfügbar ist.

Alternative Methoden

Eine weitere Möglichkeit, den Pfad in einem Makro zu ändern, ist die Verwendung der FileDialog-Funktion:

Function GetAOrdner2() As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            GetAOrdner2 = .SelectedItems(1) & "\"
        Else
            GetAOrdner2 = ""
        End If
    End With
End Function

Du kannst dann diese Funktion in Deinem Makro aufrufen, um den Pfad interaktiv auszuwählen.


Praktische Beispiele

Hier sind einige Beispiele, wie Du den Pfad in einem Makro anpassen kannst:

  1. Ordner auswählen und Dateien bearbeiten:

    Sub DateienBearbeiten()
        Dim strPath As String
        strPath = GetAOrdner2() ' Aufruf der Funktion
        If strPath <> "" Then
            ' Code, um Dateien im ausgewählten Ordner zu bearbeiten
        End If
    End Sub
  2. Benutzerdefiniertes Dialogfeld: Du kannst auch ein benutzerdefiniertes Dialogfeld erstellen, um den Benutzer zur Auswahl eines Ordners aufzufordern.


Tipps für Profis

  • Verwende Variablen für den Pfad: Anstatt den Pfad hart zu kodieren, verwende Variablen, um die Wartbarkeit des Codes zu erhöhen.
  • Fehlerbehandlung implementieren: Füge umfassende Fehlerbehandlungsroutinen hinzu, um unerwartete Probleme zu vermeiden.
  • Dokumentiere Deinen Code: Kommentiere Deinen Code, um anderen (oder Dir selbst) das Verständnis zu erleichtern.

FAQ: Häufige Fragen

1. Ist diese Methode in jeder Excel-Version anwendbar? Ja, die beschriebenen Methoden sind in den meisten modernen Excel-Versionen anwendbar, einschließlich Excel 2010 und neuer.

2. Kann ich den Pfad auch automatisch festlegen? Ja, Du kannst den Pfad automatisch festlegen, indem Du eine Logik einfügst, die den aktuellen Speicherort des Arbeitsblattes oder der Arbeitsmappe verwendet.

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