Funkcja czyMozliwyZapisDoPlikuTekstowego
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 czyMozliwyZapisDoPlikuTekstowego 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
'**********************************************************************************************************
' Nazwa: czyMozliwyZapisDoPlikuTekstowego
' Autor: mielk | 2012-12-02
'
' Opis: Funkcja sprawdzająca czy możliwe jest zapisywanie danych do pliku tekstowego o
' podanej ścieżce. Jeżeli plik o takiej ścieżce jeszcze nie istnieje, funkcja
' sprawdza czy możliwe jest utworzenie pliku o takiej ścieżce.
'
' Argumenty:
' sciezka Ścieżka do pliku, która ma być sprawdzony przez funkcję.
'
' Zwraca:
' Boolean True - jeżeli możliwe jest zapisywania do pliku tekstowego o podanej ścieżce.
' False - jeżeli użytkownik nie ma uprawnień do zapisu w folderze, w którym znajduje
' się dany plik tekstowy lub plik ten nie istnieje, ale przy obecnym poziomie
' uprawnień niemożliwe jest jego stworzenie.
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-12-02 mielk Utworzenie funkcji.
'**********************************************************************************************************
Public Function czyMozliwyZapisDoPlikuTekstowego(sciezka As String) As Boolean
Const NAZWA_METODY As String = "czyMozliwyZapisDoPlikuTekstowego"
'Stała definiująca dopuszczalne rozszerzenia plików tekstowych.
Dim ROZSZERZENIE_TXT As Variant: ROZSZERZENIE_TXT = Array("txt", "csv")
'------------------------------------------------------------------------------------------------------
Static objFSO As Object 'Późne wiązanie pozwala korzystać z funkcji nawet jeżeli
'nie jest załadowana biblioteka Microsoft Scripting Runtime.
Dim strNazwaDysku As String
Dim strFolderBazowy As String
Dim strFolderNadrzedny As String
Dim strRozszerzenie 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 '|
'----------------------------------------------------------------------------------------------------|
With objFSO
'Sprawdź czy istnieje plik tekstowy o podanej ścieżce. Jeżeli tak sprawdź czy nie jest ----------|
'chroniony przed zapisem. '|
If .FileExists(sciezka) Then '|
'|
czyMozliwyZapisDoPlikuTekstowego = Not (VBA.GetAttr(sciezka) And VBA.vbReadOnly) '|
'|
Else '|
'|
'Sprawdź czy istnieje dysk określony w podanej ścieżce. ---------------------------------| '|
strNazwaDysku = .GetDriveName(sciezka) '| '|
If .DriveExists(strNazwaDysku) Then '| '|
'| '|
'Sprawdź czy rozszerzenie podanego pliku jest zgodne z którymś ze textfile. -----| '| '|
'zdefiniowanych rozszerzeń plików tekstowych. '| '| '|
strRozszerzenie = .GetExtensionName(sciezka) '| '| '|
If czyJestWTablicy(strRozszerzenie, ROZSZERZENIE_TXT, False) Then '| '| '|
'| '| '|
'Uzyskaj folder bazowy tego pliku tekstowego. ---------------------------| '| '| '|
strFolderNadrzedny = .GetParentFolderName(sciezka) '| '| '| '|
strFolderBazowy = .GetParentFolderName(sciezka) '| '| '| '|
Do Until .FolderExists(strFolderBazowy) '| '| '| '|
strFolderBazowy = .GetParentFolderName(strFolderBazowy) '| '| '| '|
Loop '| '| '| '|
'------------------------------------------------------------------------| '| '| '|
'| '| '|
'| '| '|
'------------------------------------------------------------------------| '| '| '|
If VBA.StrComp(strFolderBazowy, strFolderNadrzedny, vbTextCompare) = 0 _
Then '| '| '| '|
'Folder docelowy już istnieje. '| '| '| '|
czyMozliwyZapisDoPlikuTekstowego = _
czyMozliwyZapisDoFolderu(strFolderNadrzedny) '| '| '| '|
Else '| '| '| '|
'Folder docelowy musi zostać stworzony. '| '| '| '|
czyMozliwyZapisDoPlikuTekstowego = _
czyMoznaDodawacPodfoldery(strFolderBazowy) '| '| '| '|
End If '| '| '| '|
'------------------------------------------------------------------------| '| '| '|
'| '| '|
'| '| '|
Else '| '| '|
'| '| '|
'Rozszerzenie pliku nie pasuje do definicji pliku tekstowego. '| '| '|
czyMozliwyZapisDoPlikuTekstowego = False '| '| '|
'| '| '|
End If '| '| '|
'---- [If .FileExists(sciezka) Then] --------------------------------------------| '| '|
'| '|
Else '| '|
'| '|
'Dysk określony w podanej ścieżce nie istnieje. '| '|
czyMozliwyZapisDoPlikuTekstowego = False '| '|
'| '|
End If '| '|
'-------- [If .FileExists(sciezka) Then] ------------------------------------------------| '|
'|
End If '|
'------------ [If .FileExists(sciezka) Then] ----------------------------------------------------|
End With
End Function