Funkcja czyMozliwyZapisDoFolderu
korzysta podczas działania z innych nie-wbudowanych funkcji prezentowanych na tej stronie, które w związku z tym również muszą być umieszczone w kodzie projektu dla prawidłowego działania tej funkcji.
Nie uwzględnienie ich w kodzie spowoduje wygenerowanie błędu: Compile error: Sub or Function not defined.
Dodatkowe funkcje wykorzystywane w funkcji czyMozliwyZapisDoFolderu zostały wymienione poniżej. Klikając w nazwę każdej z nich przeniesiesz się do podstrony zawierającej jej kod:
Dodając powyższe funkcje, zwróć uwagę czy nie były one już wcześniej wykorzystywane w Twoim kodzie. Obecność w jednym projekcie VBA dwóch funkcji publicznych o identycznych nazwach spowoduje wygenerowanie błędu kompilacji o treści: Compile error: Ambiguous name detected: nazwa_funkcji.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'**********************************************************************************************************
' Nazwa: czyMozliwyZapisDoFolderu
' Autor: mielk | 2012-12-02
'
' Opis: Funkcja sprawdzająca czy aktualny użytkownik ma prawo do zapisu w danym folderze,
' a więc może dodawać, usuwać i modyfikować pliki w tym folderze.
'
' Argumenty:
' sciezkaDoFolderu Ścieżka folderu, który ma zostać sprawdzony pod kątem możliwości zapisu.
'
' Zwraca:
' Boolean True - jeżeli użytkownik ma uprawnienia aby dodawać, usuwać i modyfikować pliki
' w danym folderze.
' False - w innym przypadku.
'
' Wyjątki:
' NieistniejacyFolder Zwracany, jeżeli folder podany jako argument wejściowy nie istnieje.
'
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-12-02 mielk Utworzenie funkcji.
'**********************************************************************************************************
Public Function czyMozliwyZapisDoFolderu(sciezkaDoFolderu As String) As Boolean
Const NAZWA_METODY As String = "czyMozliwyZapisDoFolderu"
Const NAZWA_PLIKU_TEMP As String = "TestFile.txt"
'------------------------------------------------------------------------------------------------------
Static objFSO As Object 'Późne wiązanie pozwala korzystać z funkcji nawet jeżeli
'nie jest załadowana biblioteka Microsoft Scripting Runtime.
Dim strPlikTemp As String
'------------------------------------------------------------------------------------------------------
'Tworzy instancję klasy FileSystemObject, jeżeli nie została jeszcze stworzona. ---------------------|
If objFSO Is Nothing Then '|
Set objFSO = VBA.CreateObject("Scripting.FileSystemObject") '|
End If '|
'----------------------------------------------------------------------------------------------------|
'Sprawdź czy podany folder w ogóle istnieje. --------------------------------------------------------|
If objFSO.FolderExists(sciezkaDoFolderu) Then '|
'|
'Stwórz pełną ścieżkę do pliku pomocniczego. '|
strPlikTemp = sciezkaDoFolderu '|
If Not VBA.right$(sciezkaDoFolderu, 1) = "\" Then strPlikTemp = strPlikTemp & "\" '|
strPlikTemp = unikatowaSciezka(strPlikTemp & NAZWA_PLIKU_TEMP) '|
'|
'|
'Spróbuj utworzyć plik pomocniczy. ------------------------------------------------------| '|
On Error Resume Next '| '|
Call objFSO.CreateTextFile(strPlikTemp) '| '|
On Error GoTo 0 '| '|
'----------------------------------------------------------------------------------------| '|
'|
'|
'Funkcja sprawdza czy tymczasowy plik został utworzony. Jeżeli tak, oznacza to, że ------| '|
'użytkownik ma uprawnienia do zapisu do podanego folderu. '| '|
'W takiej sytuacji funkcja zwraca wartość True i kasuje plik tymczasowy. '| '|
If objFSO.FileExists(strPlikTemp) Then '| '|
czyMozliwyZapisDoFolderu = True '| '|
Call objFSO.usunPlik(strPlikTemp) '| '|
End If '| '|
'----------------------------------------------------------------------------------------| '|
'|
Else '|
'|
GoTo NieistniejacyFolder '|
'|
End If '|
'-------- [If objFSO.FolderExists(sciezkaDoFolderu) Then] -------------------------------------------|
'==========================================================================================================
ExitPoint:
Exit Function
'----------------------------------------------------------------------------------------------------------
NieistniejacyFolder:
'Obsługa błędów dla sytuacji, kiedy podany folder nie istnieje.
GoTo ExitPoint
End Function