15.08.2022, 20:29
Hallo,
ich habe eine finktionierende Schleife, die jetzt wieder etwas erweitert werden muss.
Die Schleife 1 bestand bis jetzt nur aus 1 und 2 bzw For m = 1 To 2
Kann man anstatt Zahlen auch Buchtaben nehmen? zb Ich möchte, dass sie jetzt ungefähr so aussieht For m = m01, m02, mg63, rollo, pgd01
Ich hoffe ihr könnt mir wieder helfen, meine VBA sind ganz schlecht, ich kann nur copy und paste
LG perostojkov
ich habe eine finktionierende Schleife, die jetzt wieder etwas erweitert werden muss.
Die Schleife 1 bestand bis jetzt nur aus 1 und 2 bzw For m = 1 To 2
Kann man anstatt Zahlen auch Buchtaben nehmen? zb Ich möchte, dass sie jetzt ungefähr so aussieht For m = m01, m02, mg63, rollo, pgd01
Ich hoffe ihr könnt mir wieder helfen, meine VBA sind ganz schlecht, ich kann nur copy und paste
LG perostojkov
Code:
Option Explicit
Option Base 1
Sub Test()
Dim strMeldung As String, strTitel As String, strAntwort As Integer
Dim Name1 As String 'Ordner- bzw Dateiname
Dim pfad1 As String '1. Teil des Pfades
Dim pfad2 As String 'kompletter Pfad
Dim datei As String 'Dateiname
Dim Home As String 'ThisWorkbook
Dim arr() As String 'Array für Ordnernamen
Dim a As Long 'Index für arr()
Dim m As Integer 'Maschinen#
Dim monat As Integer 'Monats#
'********************************************************************************
' Initialisierung
'********************************************************************************
Home = ThisWorkbook.Name
datei = ActiveSheet.Range("C6")
'********************************************************************************
'Schleife 1 - MaschinenEbene
'********************************************************************************
For m = 1 To 2
'die Ordner für Jahr und Monat werden in den Programmschleifen angehängt
pfad1 = "\\server\maschine" & m & "\auftraege\"
'pfad1 = "C:\Users\Public\Documents\Anwendungen\macedonec" & m & "\" 'nur für Testzwecke
'********************************************************************************
' Schleife 2 - Alle Jahres-Ordnernamen auslesen, die mit 'pfad1' beginnen
'********************************************************************************
a = 0
Erase arr
Name1 = Dir(pfad1 & "*", vbDirectory) ' Ersten Ordner-Eintrag abrufen.
Do While Name1 <> "" ' Schleife beginnen.
'Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1 <> "." And Name1 <> ".." Then
If (GetAttr(pfad1 & Name1) And vbDirectory) = vbDirectory Then 'es handelt sich um ein gewünschtes Verzeichnis
a = a + 1 'Index für arr aktualisieren
ReDim Preserve arr(1 To a) 'arr um einen Eintrag erweitern, bisherige Daten bleiben erhalten
arr(a) = Name1 'speichern nächsten gültigen Ordnernamen in arr
End If
End If
Name1 = Dir ' Nächsten Eintrag abrufen.
Loop
'*******************************************************************************
' Schleife 3 - alle Monats-Ordner nach Datei durchsuchen
'*******************************************************************************
For a = 1 To UBound(arr)
For monat = 1 To 12
pfad2 = pfad1 & arr(a) & "\" & monat & "\" & datei & ".xls" 'Gesamt-Pfad
Name1 = Dir(pfad2)
If Name1 <> "" Then
Workbooks.Open Filename:=pfad2 'gefundene Datei öffnen
With ThisWorkbook 'dieses Workbook sichern und schließen
.Save
.Close
End With
Exit Sub
End If
Next monat
Next a 'nächsten Ordner verarbeiten
'*******************************************************************************
'Datei nicht gefunden
'*******************************************************************************
restcode unwichtig