Hallo Zusammen,
ich versuche ein paar Makros mit VBA zu schreiben. Bin aber noch ein blutiger Anfänger was diese Sprache angeht. Mit MatLab habe ich einige Erfahrungen und müsste die folgende Frage auch nicht stellen.
Aufgabenstellung:
Ich möchte in einem Verzeichnis xlsx-Dateien öffnen die einen bestimmte Zeichenkette enthalten. Nach dem Öffnen sollen aus verschiedenen Sheets Informationen kopiert werden und in einer Ergebnisdatei gespeichert werden.
Mit Hilfe verschiedener Forumsbeiträge habe ich den später folgenden Code geschrieben. Dieser Funktioniert soweit. Spricht Dateinamen die nicht "Sanierung" enthalten werden nicht geöffnet. Wenn die erste Datei aufgerufen wird, die "Sanierung" enthält, werden mit dem Befehl Workbooks.Open Filename:=strInput & strDatei alle Dateien geöffnet die den String enthalten. Dies verwirrt mich da "strInput & strDatei" ja nur eine bestimmte Datei aufruft. Was läuft hier verkehrt?
Sub Dateien_oeffnen()
Dim strInput As String
Dim strOutput As String
Dim strDatei As String
Dim Pruefung As Byte
Dim Sanierung As String
With Application
.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
.DisplayAlerts = False 'Nachfragen ausschalten - ggf. vorhandene Dateien werden überschrieben
End With
'Ein- und Ausgabepfad wird festgelegt
strInput = "C:\Projektplanung\"
strOutput = "C:\Projektplanung\Auswertung\"
'nur Excel-Dateien öffnen
strDatei = Dir(strInput & "*.xlsx")
'Schleife zum Öffnen der Dateien
Do While strDatei <> ""
'Prüfung ob die Datei "Sanierung" im Namen enthält
Pruefung = InStr(strDatei, "Sanierung")
If Pruefung = 0 Then
MsgBox "Dateiname enthält kein String mit: Sanierung"
Else
MsgBox "Dateiname enthält einen String mit: Sanierung"
'Datei öffnen
Workbooks.Open Filename:=strInput & strDatei
'1. Blatt in Arbeitsmappe auswählen
Workbooks(strDatei).Worksheets("Deckblatt").Activate
End If
strDatei = Dir ' nächste Datei Laden
Loop
With Application
.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
.DisplayAlerts = True 'Nachfragen einschalten
End With
End Sub
Viele Grüße und schon mal vielen Dank im Voraus für die Hilfe
ANFÄNGER