Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 75841 Skopiuj do schowka OneDrive - zbyt długa ścieżka dostępu
Autor Wiadomość
kloszuu
Exceloholic


Pomógł: 1 raz
Posty: 242
Wysłany: 15-05-2024, 11: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 Skopiuj do schowka
 
 
Rafał B. 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 82 razy
Posty: 482
Wysłany: 16-05-2024, 14: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
_________________
Częstym błędem jest zakładanie, że autorzy niezrozumiałego kodu będą w jakiś sposób potrafili wyrazić się jasno i klarownie w komentarzach. Kevlin Henney
ID posta: 435366 Skopiuj do schowka
 
 
Artik 
Artik



Wersja: Win Office 365
Pomógł: 3256 razy
Posty: 10762
Wysłany: 23-05-2024, 01: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 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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