Pisząc nieco bardziej zaawansowane makra czasami chcemy „na chwilę” utworzyć jakiś plik tymczasowy, który po wykonaniu makra zostanie usunięty. Najlepszą lokalizacją na takie pliki tymczasowe jest systemowy folder temp.
U mnie przykładowo ten folder znajduje się w lokalizacji:
C:\Users\[Nazwa_użytkownika]\AppData\Local\Temp
lub
C:\Windows\Temp\
Obie lokalizacje są problematyczne. Do pierwszej trzeba znać nazwę użytkownika a do drugiej ścieżkę do systemu Windows (zazwyczaj C:\Windows\ ale nie jest to reguła). Oprócz tego można zmienić ścieżkę do folderu Temp w ustawieniach systemu. Poza tym w nowszych wersjach Windowsa domyślna ścieżka do folderu TEMP może ulec zmianie, więc najlepiej skorzystać z jakiejś funkcji, która zwróci ścieżkę do folderu TEMP.
Najprostszy sposób to odczytanie zawartości zmiennej środowiskowej TEMP. Oto przykładowy kod zwracający ścieżkę do folderu na pliki tymczasowe:
Function GetTempPath() As String
GetTempPath = Environ("TEMP")
End Function
Możesz również skorzystać z Win32API korzystając z funkcji: GetTempPathA, ale tutaj będzie troszkę więcej kodu i należy uwzględnić sytuację, że niektóre osoby mają 32- albo 64-bitową wersję pakietu MSOffice. Oto przykładowy kod:
#If VBA7 Then
Declare PtrSafe Function GetTempPathA Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
#Else
Declare Function GetTempPathA Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
#End If
Function GetTempPathAPI() As String
Dim sTempPath As String
Dim nLength As Long
sTempPath = Space(255)
nLength = GetTempPathA(255, sTempPath)
If nLength > 0 Then
GetTempPathAPI = Left(sTempPath, nLength)
Else
GetTempPathAPI = ""
End If
End Function
A czy Ty znasz jeszcze jakiś inny sposób, jak można odczytać ścieżkę do folderu Temp?