[Excel] Makro findet Dateien nicht

Dabei seit
Nov. 2014
Beiträge
222
#1
Hallo zusammen,

ich habe mir ein Excel-Makro zusammengesucht und in meiner "persönlichen Makro Arbeitsmappe" (kurz PMA) abgespeichert. Damit möchte ich alle *.xlsx Dateien eines (beliebigen) Ordners bearbeiten. Den Dateipfad gebe ich im Makro festverdrahtet vor. Ich weiß dass das Makro an sich funktioniert, da es bereits zwei mal wie erwartet ablief. Was ich diese beide male anders gemacht habe, kann ich nicht sagen.. Ich akzeptiere aber jederzeit auch eine Änderung am Code selbst! Hauptsache am Ende läuft das alles zuverlässig.

Bis auf bei den beiden Glückstreffer bekomme ich diese Fehlermeldung sobald Zeile 22 (siehe unten) erreicht wird:

excelmakroarbeitsmappe.PNG


Anscheinend "arbeitet" das Makro im richtigen Verzeichnis, da es sich dort ja den Dateinamen der ersten Exceltabelle holt. Das habe ich auch mit umbenennen der Datei überprüft.

Auch überprüft:
Die Dateien unter C:\ (wie die PMA) und nicht unter X:\ abzulegen -> Fehler
Ganz frische, leere Exceldatei verwendet -> Fehler
Makro aus der zu bearbeitenden Datei und nicht der PMA gestartet -> Fehler

Ich weiß jetzt wirklich nicht mehr weiter. Jeder Hinweis wie ich das ganze reproduzierbar zum durchlaufen bekomme, ist gerne gesehen!

Code:
Option Explicit

Public Sub MA_Fotometrie_Diagramm()

'//deklarationen
Dim strFileName As String
Dim objWorkbook As Workbook

'//Errorhandler initialisieren
On Error GoTo err_exit

'//erste Excelmappe suchen - Ordner anpassen !!!
strFileName = Dir$("X:\OneDrive\!!050TUBS\!MA\020_Soot-Yield_Cone-Versuche\F_\F\*.xlsx", vbNormal)

'//wenn eine Excelmappe gefunden wurde
If strFileName <> "" Then

'//Schleife starten
Do

'//Excelmappe öffnen
Set objWorkbook = Workbooks.Open(Filename:=strFileName)

'//Hier kommt jetz dein Code

    Range("B:B,E:E,F:F").Select
    Range("F1").Activate
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterLinesNoMarkers).Select
    ActiveChart.SetSourceData Source:=Range("B:B,E:E,F:F")
    
'//Excelmappe schließen - ohne zu speichern = False / mit speichern = True
objWorkbook.Close SaveChanges:=True

'//nächste Excelmappe suchen
strFileName = Dir$

'//wird keine Mappe mehr gefunde Schleife verlassen
Loop Until strFileName = ""

End If

Exit Sub

err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"

End Sub
 

rocketworm

Lt. Junior Grade
Dabei seit
Mai 2017
Beiträge
316
#3
Try This:

Edit: Die geänderten stellen habe ich mal rot hervorgehoben
Edit2: Mist Farben werden im CODE Block bei computerbase nicht dargestellt, also ohne... xD


Option Explicit

Public Sub MA_Fotometrie_Diagramm()

'//deklarationen
Dim meinpfad, strFileName As String
Dim objWorkbook As Workbook


'//Errorhandler initialisieren
On Error GoTo err_exit

meinpfad = "X:\OneDrive\!!050TUBS\!MA\020_Soot-Yield_Cone-Versuche\F_\F\"

'//erste Excelmappe suchen - Ordner anpassen !!!
strFileName = Dir$(meinpfad & "*.xlsx", vbNormal)

'//wenn eine Excelmappe gefunden wurde
If strFileName <> "" Then

'//Schleife starten
Do

'//Excelmappe öffnen
Set objWorkbook = Workbooks.Open(Filename:=meinpfad & strFileName)

'//Hier kommt jetz dein Code

Range("B:B,E:E,F:F").Select
Range("F1").Activate
ActiveSheet.Shapes.AddChart2(240, xlXYScatterLinesNoMarkers).Select
ActiveChart.SetSourceData Source:=Range("B:B,E:E,F:F")

'//Excelmappe schließen - ohne zu speichern = False / mit speichern = True
objWorkbook.Close SaveChanges:=True

'//nächste Excelmappe suchen
strFileName = Dir$

'//wird keine Mappe mehr gefunde Schleife verlassen
Loop Until strFileName = ""

End If

Exit Sub

err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"

End Sub
 
Zuletzt bearbeitet:
Dabei seit
Apr. 2018
Beiträge
164
#4
Ja, wie schon gepostet ...
Dein anfangs definierter Pfad wurde ueberschrieben.
Bei so etwas ist es hilfreich das Skript mit F8 Schritt fuer Schritt durchzugehen und die Variablen zu kontrollieren oder diese ueber "debug.print Variable" ausgegben zu lassen.
 

porenbeton

Ensign
Ersteller dieses Themas
Dabei seit
Nov. 2014
Beiträge
222
#6
Das Schritt für Schritt durchgehen habe ich gemacht, mir fehlte @rocketworms Anzeige.

Die Vorgeschlagenen Änderungen führen jedoch beide zu Syntaxfehlern:
"erwartet Listentrennzeichen oder )".

Aber ihr habt soweit schon mal recht. In der Variable "strFileName" steht tatsächlich nur der Dateiname drin.

excelmakroarbeitsmappe2.PNG
 
Zuletzt bearbeitet:

rocketworm

Lt. Junior Grade
Dabei seit
Mai 2017
Beiträge
316
#7
Bei mir funktioniert der gepostete Code. Kopier ggf. mal alles in dein Modul oder poste nochmal deinen angepassten Code. Klingt so als wenn irgendwo nen Komma fehlt....
 
Dabei seit
Apr. 2012
Beiträge
7.899
#8
Das Schritt für Schritt durchgehen habe ich gemacht, mir fehlte @rocketworms Anzeige.
Es reicht (allgemein) mit der Maus über der Variable zu schweben, das liefert (vielen Dank für den wenigen Anzigeplatz, MS) meist genug um den Bösewicht auszumachen.

@rocketworm
Wenn du den originalen meinst, ich kann dir bestätigen, dass mir auch schon Pfadangaben fehlten wo ich mit ihnen gerechnet hatte ;)

CN8
 

porenbeton

Ensign
Ersteller dieses Themas
Dabei seit
Nov. 2014
Beiträge
222
#9
Du hast natrülich recht, der Code funktioniert. Keine Anhnung warum er gestern gemeckert hat.. Vermutlich zu viel rumkopiert und verändert, bis dann irgenwo ein Fehler war. :freak:

Vielen Dank!

Für die Vollständigkeit nochmal mit Code-Tags:
Code:
Option Explicit
Public Sub MA_Fotometrie_Diagramm()
'//deklarationen
Dim meinpfad, strFileName As String
Dim objWorkbook As Workbook
'//Errorhandler initialisieren
On Error GoTo err_exit
meinpfad = "X:\PFAD"
'//erste Excelmappe suchen - Ordner anpassen !!!
strFileName = Dir$(meinpfad & "*.xlsx", vbNormal)
'//wenn eine Excelmappe gefunden wurde
If strFileName <> "" Then
'//Schleife starten
Do
'//Excelmappe öffnen
Set objWorkbook = Workbooks.Open(Filename:=meinpfad & strFileName)
'//Hier kommt jetz dein Code

'//Was das Makro machen soll

'//Excelmappe schließen - ohne zu speichern = False / mit speichern = True
objWorkbook.Close SaveChanges:=True
'//nächste Excelmappe suchen
strFileName = Dir$
'//wird keine Mappe mehr gefunde Schleife verlassen
Loop Until strFileName = ""
End If
Exit Sub
err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"
End Sub
 
Top