Ein mysteriöses Problem mit einer Makro
#1
Hallo,

seit 2005 läuft ein System von Excel-Makros, das die Stunden der Angestellten einer gemeinnützigen Stiftung verwaltet.
Das ganze spielt sich in einer Datei ab, die "Base" heißt.

In dieser Datei gibt es u.a. für jede Dienststelle ein Blatt mit den relevanten Daten der Mitarbeiter (Name, Geburtsdatum, Einstellungsdatum, Stunden pro Woche, Urlaub usw.)
Der Angestellte der dieses System bedient produziert jeden Monat eine Datei (Datei1) pro Dienststelle mit einem Blatt pro Mitarbeiter mit einer Zeile pro Monatstag wo sie ihre geleisteten Stunden Stunde pro Stunde eintragen (X=1 Arbeitsstunde, C=1 Urlaubsstunde, M=1 Krankheitsstunde usw.).
Am Ende des Monats schicken die Dienststellen die ausgefüllten Dateien zurück und eine Makro hat die Aufgabe, sie in einem Ordner namens "ToBeCopied" zu öffnen, die Daten auszulesen und sie in einer zentralen Datenbank in "Base" einzufügen.
Außerdem wird jeden Monat eine Datei (Datei2) pro Dienststelle mit einem Uebersichtsblatt pro Mitarbeiter produziert, in dem alle Daten seit dem 1.1. verarbeitet sind.

Da am 1.9. eine neue Dienststelle ihre Arbeit aufgenommen hat, habe ich gestern ein Blatt mit den Mitarbeiterdaten in "Base" eingefügt.

Danach haben wir getestet, ob alles korrekt läuft, ob die Dateien Datei1 und Datei2 korrekt produziert werden, und ob die Daten am Ende des Monats richtig in die Datenbank eingefügt werden.

Alles hat korrekt funktioniert, mit Ausnahme von dem Einfügen in die Datenbank.
Hier unten die relevanten Zeilen der Makro, die die ausgefüllten Monatsdateien, die bei ihrer Ankunft von den Dienststellen in den Ordner ToBeCopied gesetzt worden sind, auslesen soll. "Die Datei "Base" und der Ordner "ToBeCopied" befinden sich im selben Verzeichnis.

Die Makro soll alle Dateien mit der Endung .xls öffnen und auslesen; falls es keine solche Datei gibt in dem Ordner, wird eine Message ausgegeben.

Das Problem:
Excel hat keine Dateien im Ordner gefunden, obschon es 2 gab. Da ich festgestellt habe, dass .xls nicht angezeigt wurde, die Makro aber nach .xls sucht, dachte ich zuerst (obwohl mir gleich Zweifel kamen, weil es bisher ohne angezeigtes .xls im Namen funktioniert hat), das Hinzufügen von .xls würde das Problem lösen. Tat es auch, aber nur einmal: es gab 2 .xls Dateien im Ordner, ohne angezeigtes .xls; bei der einen habe ich .xls hinzugefügt, bei der anderen nicht; dann habe ich die Makro gestartet, und Excel hat diesmal nicht nur die Datei mit angezeigtem .xls gefunden und ausgelesen, sondern, o Wunder, auch die ohne!
Ich habe dann etwas herumexperimentiert, .xls wieder gelöscht: die Dateien wurden nicht mehr gefunden, .xls wieder hinzugefügt: keine der Dateien wurde gefunden. Inzwischen war Excel schon mehrfach neu gestartet worden, den Computer habe ich auch neu gestertet, ohne Erfolg, es bleib dabei.

Dann bin ich auf die Idee gekommen, es mit einem anderen Computer zu versuchen ("Base" befindet sich auf einem Server): die Dateien wurden ohne die Endung erkannt!

Zu bemerken dass ich die Makro mehrfach Schritt für Schritt ausgeführt habe (F8), und durch Bewegen des Mauszeigers auf "Pfad" und "Suchpfad" in der Makro bewegt habe mich vergewissert, dass der Pfad der richtige war, was der Fall war. Aber  "FNames" hat "", also keine Datei vorhanden, angezeigt.

Woran kann das liegen? Mir ist es total unverständlich, da der Pfad der richtige ist und die Instruktion in der Makro eindeutig ist: "ChDir Suchpfad" und "FNames=Dir("*.xls").

Der Code:
Code:
Set wbZiel = Workbooks("Base.xls")
Pfad = ActiveWorkbook.Path
SuchPfad = Pfad & "\TobeCopied"
ChDir SuchPfad

'---upfront check----
msg = "You are about to copy all data " & Chr(13) & _
        "from the folder" & Chr(13) & "<TobeCopied>" & _
        Chr(13) & "to the database list."
If MsgBox(msg, vbOKCancel) = vbCancel Then Exit Sub

'---check if there are files to be copied----
FNames = Dir("*.xls")
If Len(FNames) = 0 Then
    MsgBox "No files in the Directory"
    ChDir Pfad
    Exit Sub
End If


Mit freundlichen Grüßen
Alooha
Antworten Top
#2
Hallöchen,

1)
wenn es an einem Rechner funktioniert, an einem anderen nicht, kann es z.B. an der Excel-Installation liegen oder am Userprofil. Probiere doch mal mit einem anderen User, ob es da klappt.

2)
Du wechselst zwar in den Suchpfad, ich programmiere in der Regel beim Dir trotzdem mit Pfadangabe.

3)
Warum nehmt Ihr noch das alte Excel-Format?

4)
Hast Du mal Dir("*.xls*") versucht?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo,
vielen Dank für die Anregungen.
Ich schaue heute Abend danach, jetzt muß ich in die Kartoffelernte.
Einen schönen Tag
Alooha
Antworten Top
#4
Hallo


Zitat:Hast Du mal Dir("*.xls*") versucht?


ich tippe auch darauf das es daran liegt, den die xls Dateien Excel 97-2003 laufen aus. Die neuen sind xlsx und xlsm.

mfg Gast 123
Antworten Top
#5
Hallo,

@"schauan":
ad 1: es ist nur ein User definiert auf diesem PC
ad 2: das heißt?
ad 3: gute Frage.
erstens weil es funktioniert, zweitens weil auf verschiedenen Computern noch Excel-versionen von vor .xlsx und .xlsm  liefen und drittens weil es ziemlich viele Aenderungen in den Makros bedingen würde.
Da es noch immer funktioniert: Never change a running system!
ad 4: nein, werde ich am Montag tun
Da es in diesem Ordner immer ausschließlich diese auszulesenden .xls Dateien gibt könnte die Makro so umgeändert werden, dass sie alle im Ordner vorhandenen Dateien öffnen würde. Nur weiß ich nicht wie!

@"Gast 123": wie gesagt, habe ich das noch nicht versucht. Alle Dateien sind .xls Dateien!

Mit freundlichen Grüßen
Alooha
Antworten Top
#6
Hallöchen,

1)
melde auf dem Rechner mal einen anderen user an und probier, was bei dem passiert.

2)
Du hast nicht selber programmiert?

...Dir(suchpfad & "\*.xls")
bzw
...Dir(suchpfad & "\*.xls*")
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Nein, ich habe den Code nicht selbst geschrieben.
Ich werde am Montag anregen, der Nutzer dieses PC's soll Deine Ratschläge mal in die Tat umsetzen.
Antworten Top
#8
Hallo Alooha,

probiere mal 
Code:
FNames = Dir(suchpfad & "\*.xls")
oder füge oben noch folgende Zeile ein:
Code:
ChDrive suchpfad
Gruß Uwe
Antworten Top
#9
Hallo,
was meinst Du mit "oben"?
MfG
Alooha
Antworten Top
#10
Hallo Alooha,

damit meinte ich, dass die zusätzliche Codezeile direkt unter die 4. Zeile Deines geposteten Codes käme.

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste