Dateioperationen unter Excel VBA und Win10
02.05.2018 16:33:27
Johannes
nachdem ich bereits unzählige Male in diesem Forum Wissen und Problemlösungen gefunden habe bin ich heute auf etwas gestoßen was ich mir nicht erklären kann.
Problem:
Wir generieren aus einer Datenbank Übersichten die wir einmal wöchentlich komplett durchsprechen um Prioritäten und Probleme zu erkennen.
Dazu bereiten wir den Datenbank-Dump mittels eines Makros auf und stellen die einzelnen Produktionsstufen farblich dar. Wir gehen dann jeden einzelnen Datensatz mittels einer Userform durch und treffen online alle nötigen Entscheidungen. So weit so gut, funktioniert seit ca 2 Jahren quasi problemlos...
Um Datenverlust (es gibt immer mal wieder Verbindungsprobleme zum Server) bei den protokollierten Entscheidungen zu vermeiden, werden bei jedem Wechsel eines Datensatzes die aktuellen Entscheidungen in einer lokalen Protokolldatei ablegt (mittels Makro in der UF). Diese Datei wird aktuell auf dem Zielpfad C:\ angelegt (einfach deshalb weil C:\ immer existiert).
Seit wir die IT-Landschaft langsam von Win7 auf Win10 umstellen ergibt sich genau an dieser Stelle ein Fehler, das Makro meldet Zugriffsprobleme auf dem Zielpfad. Obwohl der user "Admin"-Rechte hat kann VBA nicht an den Zielpfad schreiben. Wird der Zielpfad von C:\ auf C:\temp\ geändert funktioniert es wieder.
Vielleicht denke ich ja in die falsche Richtung, aber gibt es eine Restriktion von Windows 10 und VBA ? Ich würde ja auch prüfen ob es den Pfad C:\temp\ gibt, und wenn nicht diesen einfach automatisch anlegen, aber das wird ja dann auch nicht gehen...
Hier die beiden m. E. entscheidenden Code-Stellen:
Bei Initialisierung der UF erfolgt eine Prüfung ob eine aktuelle lokale Zwischenspeicherdatei vorhanden ist (wenn ja wird diese umbenannt):
Zielpfad_Zwischenspeicher = "C:\"
If Dir(Zielpfad_Zwischenspeicher & "ZwischenspeicherABI_" & Format(Now, "yyyymmdd") & ".txt") "" Then
Name Zielpfad_Zwischenspeicher & "ZwischenspeicherABI_" & Format(Now, "yyyymmdd") & ".txt" As _
Zielpfad_Zwischenspeicher & "ZwischenspeicherABI_" & Format(Now, "yyyymmdd_hhmmss") & ".txt"
End If
Daten Zwischenspeichern (ABI_Speicher_String sind die aktuellen Entscheidungen und Kommentare):
ZwischenspeicherName_ABI = Zielpfad_Zwischenspeicher & "ZwischenspeicherABI_" & Format(Now, "yyyymmdd") & ".txt"
Open ZwischenspeicherName_ABI For Output As #1
Print #1, ABI_Speicher_String
Close #1
ich hoffe ich hab das Problem halbwegs klar beschrieben und war nicht zu ausufernd. Also hier nochmal die Frage: Wir kann ich sinnvollerweise von Excel-VBA eine lokale Protokolldatei ablegen, ohne ständig in Zugriffsprobleme zu kommen ?
Danke fürs Lesen !
Johannes