Потерял уже очень много времени на элементарный вопрос: как в VBA из короткой формы полного пути файла получить расширенную. Т.е., например, из
C:\DOCUME~1\abc.txt
получить:
C:\Documents and Settings\abc.txt
Вот эти функции API элементарно не работают:
- Код: Выделить всё
Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" ( _
ByVal lpFileName As String, _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String, _
ByVal lpFilePart As String _
) As Long
Declare Function GetLongPathName Lib "kernel32.dll" Alias "GetLongPathNameA" _
(ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
Чего только не перепробывал. Главное, код возврата вроде правильный - не 0. Но вот преобразованный путь в буфер не пишется.
- Код: Выделить всё
MyTempDir = String(128, Chr$(0))
ss1 = Environ$("TEMP")
MsgBox ss1
ii_call = GetLongPathName(ss1, MyTempDir, Len(MyTempDir))
MsgBox ii_call
MsgBox MyTempDir
В первом сообщение - правильная короткая форма, во втором - число больше 0, а в третьем - вообще ничего.
Win 2000
Excel 2002
VBA 6.3
Спасибо.