131 Aufrufe
Gefragt in Windows 10 von
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

1 Antwort

0 Punkte
Beantwortet von blutiger_anfaenger Einsteiger_in (7 Punkte)
Hallo Zusammen,

eine Ergänzung. Lasse ich den Code automatisch über die Markierung mit F9 bis Workbooks(strDatei).Worksheets("Deckblatt").Activate laufen, wird nur eine Datei geöffnet. Führe ich den Code einzeln mit F8 aus, werden mit dem Befehl Workbooks.Open Filename:=strInput & strDatei alle dateien hintereinander geöffnet.

Viele Grüße

blutiger Anfänger
...