Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateioperationen unter Excel VBA und Win10

Dateioperationen unter Excel VBA und Win10
02.05.2018 16:33:27
Johannes
Servus,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateioperationen unter Excel VBA und Win10
02.05.2018 17:55:14
Luschi
Hallo Johannes,
es war noch nie eine gute Idee, C:\ als Lagerort für selbsterstelle Dateien zu benutzen.
In 'Windows 10' wurde da eine Bremse eingebaut. So kannst Du im Explorer per rechter Maustaste in diesem Wurzelverzeichnis mit 'Neu' nur noch Verzeichnisse anlegen, aber eben keine Textdaten usw.
Mit der API-Funktion 'MakeSureDirectoryPathExists' kannst Du aber in 'C:\' Unterverzeichnisse beliebiger Tiefe anlegen; siehe:
http://www.vbarchiv.net/api/api_makesuredirectorypathexists.html
Call MakeSureDirectoryPathExists("c:\Temp\Johannes\"
legt das Temp-Verzeichnis an, wenn es noch nicht existiert und darin das Johannes-Verzeichnis.
Gruß von Luschi
aus klein-Paris
Anzeige
Hier bietet es sich doch an,...
03.05.2018 07:52:25
Case
Hallo Johannes, :-)
... mit dem in der Regel immer vorhandenen TEMP-Ordner von Windows zu arbeiten. Dann musst Du auch nichts anlegen. Funktioniert in Windows 7 und 10. ;-)
Zielpfad_Zwischenspeicher = Environ("TEMP") & Application.PathSeparator
Es gibt natürlich noch viel mehr Umgebungsvariablen - z. B.:
Environ("APPDATA") 'Pfad Anwendungsdaten
Environ("CommonProgramFiles") 'Ordner für Gemeinsame Dateien
Du kannst sie dir auch über eine Schleife im Direktfenster ausgeben lassen:
Dim lngTMP As Long
For lngTMP = 1 To 40
Debug.Print Environ(lngTMP)
Next lngTMP
Dann wärst Du erstmal unabhängig von der WIN-Version.
Servus
Case

Anzeige
AW: Hier bietet es sich doch an,...
03.05.2018 13:34:30
Johannes
Hallo Luschi und Case,
vielen Dank für die beiden Antworten.
...wieder was gelernt...
Ich hab jetzt die 'Environ("Temp")' Variante von Case verwendet, hat auf Anhieb erstmal geklappt. Wir testen jetzt noch mit paar versch. Logins (manchmal soll es unter Windows da ja Unterschiede geben...) ansonsten sollte das Problem aber gelöst sein.
Vielen lieben Dank für die Hilfe
Johannes

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige