Καλησπέρα Γιάννη!
Πληροφοριακά σου λέω ότι η έκφραση
MkDir "C:\Temp\TestFolder" θα δημιουργήσει τον φάκελο
TestFolder μόνο αν υπάρχει ο φάκελος
"C:\Temp\".
Διαφορετικά θα προκληθεί σφάλμα εκτέλεσης.
Αν είσαι δεν είσαι σίγουρος αν "C:\Temp\" υπάρχει στο σύστημα, τότε θα πρέπει
να τροποποιήσεις τον κώδικα σου έτσι που να ελέγξει την ύπαρξη κάθε φακέλου που αναφέρεται στη διαδρομή
C:\Temp\TestFolder και αν δεν υπάρχει να τον δημιουργήσει
Για παράδειγμα:
Κώδικας:
Sub test()
If Dir("C:\Temp1", vbDirectory) = vbNullString Then MkDir "C:\Temp1"
If Dir("C:\Temp1\test", vbDirectory) = vbNullString Then MkDir "C:\Temp1\test"
End Sub
Ακόμα πιο απλά (ειδικά σε διαδρομές με περισσότερα επίπεδα) μπορεί να γίνει με τη χρήση της συνάρτησης
MakeSureDirectoryPathExists (Windows
API).
Επιστρέφει
True αν επιτύχει και
False αν προκληθεί κάποιο σφάλμα κατά την εκτέλεση της.
Η συνάρτηση περνιέται στην πάνω από όλες τις μακροεντολές μιας λειτουργικής μονάδας όπως
φαίνεται στον κώδικα παρακάτω:
Κώδικας:
Option Explicit
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Sub test1()
Dim x As Boolean
x = MakeSureDirectoryPathExists("C:\Temp1\test1\test1")
MsgBox x
End Sub
Για να έχουμε συμβατότητα σε συστήματα με λειτουργικό 64 bit και Office 2010 χρησιμοποιούμε:
Κώδικας:
Option Explicit
#If VBA7 Then
#If Win64 Then
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) _
As LongPtr
#Else
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
#End If
#Else
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
#End If
Sub test1()
Dim x As Boolean
x = MakeSureDirectoryPathExists("C:\Temp1\test1\test1")
MsgBox x
End Sub
Για την εξερεύνηση των Windows σου προτείνω τον παρακάτω σύνδεσμο:
http://www.ms-office.gr/forum/1418-post5.html
Τάσος