VBA - kodowanie nazwy pliku

Wątek przeniesiony 2024-06-25 14:44 z Inne języki programowania przez cerrato.

AM
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 6 lat
1

Cześć,
Mam makro, które zmienia mi zawartość pliku na csv z kodowaniem UTF-8 bez BOM i to działa poprawnie.
Natomiast nie do końca potrafię ograrnąć nazwę pliku (pliki zapisuję na serwerze unixowym) i wygląda to tak:

  • przeglądając zawartość katalogu na serwerze przez windowsowego explorera widzę taką nazwę pliku: DID2ZV~D
  • przeglądając serwer za pomocą np. WinSCP mam taką: ddp_sm_test1.

Sprawdzając na innym kompie i zapisując plik za pomocą poniższego makra plik bezpośrednio na serwerze mam nazwę jak w pierwszym przypadku. Zapisując plik najpierw lokalnie na kompie, a potem kopiując na serwer - jest ok.

Jak to ogarnąć? Najlepiej by było, żeby nazwa pliku była w kodowaniu UTF-8 bez BOM.
Kody mam mniej więcej takie:

Kopiuj
Dim objStream
Set objStream = CreateObject("ADODB.Stream")

Dim sFileSaveName As Variant

With objStream
        .Open
        .Position = 0
        .Charset = "UTF-8"
        .Type = 1
End With
sFileSaveName = Application.GetSaveAsFilename
If (sFileSaveName <> False) Then
        objStream.SaveToFile sFileSaveName, 2
End If
objStream.Close
edytowany 1x, ostatnio: Amaru
DB
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 lata
  • Postów:36
0

Wygląda, że tutaj jest rozwiązanie.

AM
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 6 lat
0

Tylko mi właśnie nie chodzi o zawartość pliku, bo to mam ogarnięte. Chodzi mi o samą nazwę pliku...

DB
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 lata
  • Postów:36
0

Tutaj masz również zapisywanie pobranej nazwy - być może działa jak napisał autor.

AM
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 6 lat
0

W taki sam sposób mam to zapodane u siebie.... Tak jak mówię. Zapisując plik lokalnie - nazwa jest ok, przy podaniu ścieżki zapisu bezpośrednio na serwer - wtedy jest problem, tzn przez win explorera nazwa wygląda "dziwnie", przez WinSCP jest ok (z tym, że niepokoi mnie ta kropka na końcu nazwy pliku...) "ddp_sm_test1."

Neutral
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Polanów
  • Postów:151
0

Jaką opcję podajesz przy wysyłaniu na server na obydwu programach?

Docs, docs, docs, docs, docs, docs (wmi).

Jeśli coś, to jest coś takiego jak psExec, nie wiem; może to byłoby OK?
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

edytowany 6x, ostatnio: Neutral

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.