ID tematu: 75841
|
OneDrive - zbyt długa ścieżka dostępu |
Autor |
Wiadomość |
kloszuu
Stały bywalec Excelforum
Pomógł: 1 raz Posty: 253
|
Wysłany: 15-05-2024, 10:26 OneDrive - zbyt długa ścieżka dostępu
|
|
|
Witam,
Mam pytanie odnośnie jak sobie radzić w przypadku gdy używana jest replikacja plików z OneDrive na komputerze i ścieżka dostępu przekracza 260 znaków. Wówczas makra odnoszące sie do tej ścieżki przestają działać. Nawet taki prosty kod:
Kod: |
Application.ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "test33", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
|
Oryginalny plik jest właśnie zapisany w destynacji ktora przekracza 260 znaków.
Czy jest jakiś sposób jak VBA może sobie z tym poradzić?
Pozdrawiam
Piotrek |
|
| ID posta:
435346
|
|
|
|
|
|
|
Rafał B.
ExcelSpec
Wersja: Win Office 2021
Pomógł: 89 razy Posty: 507
|
Wysłany: 16-05-2024, 13:52
|
|
|
Jeśli w grę wchodzi uruchomienie hosta (Excel) jako administrator, to można spróbować czy nie zadziała obejście z utworzeniem linku symbolicznego i później wykorzystywanie go do wszystkich operacji. Kod roboczy, nie mam możliwości przetestowania, bo chwilowo nie mam uprawnień admina, jedynie jako pomysł, który mi przyszedł do głowy. Nie wiem też jak w Windows działają linki symboliczne (na linuksie wyrównia się soft i hard symlinki, nie wiem jakiego typu są na Windows).
Kod: | Option Explicit
Sub CreateSymbolicLink(ByVal longPath As String, ByVal shortPath As String)
Dim command As String
Dim result As Long
' Check if the longPath exists
If Dir(longPath, vbDirectory) = "" Then
MsgBox "The target directory does not exist: " & longPath, vbCritical
Exit Sub
End If
command = "cmd /c mklink /D " & Chr(34) & shortPath & Chr(34) & " " & Chr(34) & longPath & Chr(34)
result = Shell(command, vbNormalFocus)
Application.Wait (Now + TimeValue("0:00:02")) ' robocze obejście, by był czas na utworzenie linku
If Dir(shortPath, vbDirectory) = "" Then
MsgBox "Failed to create symbolic link", vbCritical
Else
MsgBox "Symbolic link created successfully", vbInformation
End If
End Sub
Sub TestCreatingSymbolicLink()
CreateSymbolicLink "C:\Users\Informatyka\Desktop\LongDir", "C:\Users\Informatyka\Desktop\FakeShortDir"
End Sub
Sub TestSave()
Dim shortPath As String
shortPath = "C:\Users\Informatyka\Desktop\FakeShortDir"
ActiveWorkbook.SaveAs Filename:=shortPath & "\test.xlsm"
End Sub |
|
_________________ W erze zaawansowanych narzędzi LLM takich jak GPT 50% problemów użytkowników forum może być efektywnie rozwiązanych przez nich samych za pomocą tych narzędzi. Jednak często bardziej cenią swój czas niż czas tych, którzy oferują tutaj pomoc. |
|
| ID posta:
435366
|
|
|
|
|
|
Artik
Artik
Wersja: Win Office 365
Pomógł: 3261 razy Posty: 10775
|
Wysłany: 23-05-2024, 00:36
|
|
|
Spróbuj może zadziała.
Przed lokalizacją pliku dodaj \\?\, czyli otrzymasz łańcuch mniej więcej takiej postaci: Kod: | "\\?\D:\Baaaaardzo\długa\ścieżka\do\mójplik.xlsm" |
Ewentualnie pozostaje chyba grzebanie w rejestrze. Więcej tutaj.
Artik |
_________________ Persistence is a virtue in the world of programming.
Weryfikator NIP - szybka, masowa weryfikacja w MF i VIES. |
|
| ID posta:
435456
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|