[Excel] Makro findet Dateien nicht

porenbeton

Lt. Junior Grade
Registriert
Nov. 2014
Beiträge
290
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
 
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:
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.
 
  • Gefällt mir
Reaktionen: porenbeton
Scientist schrieb:
Bei so etwas ist es hilfreich das Skript mit F8 Schritt fuer Schritt durchzugehen und die Variablen zu kontrollieren
@TE Genau, was mit den Variablen passierst kannst du dann sehen wenn du im Menü Ansicht das Lokalfenster einblendest.
 
  • Gefällt mir
Reaktionen: porenbeton
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:
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....
 
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
 
  • Gefällt mir
Reaktionen: porenbeton
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
 
Zurück
Oben