Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Άνοιγμα Αρχείου 'Εξερεύνηση των Windows' με δημιουργία Φακέλου (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1719-anoigma-arxeioy-eksereinisi-ton-windows-me-dimioyrgia-fakeloy.html)

john-john 13-03-12 18:32

Άνοιγμα Αρχείου 'Εξερεύνηση των Windows' με δημιουργία Φακέλου
 
Καλησπέρα σας,

Αρχικά να πω Συγχαρητήρια για το πολύ καλό forum !! που το βρήκα τυχαία βέβαια αλλά το χρησιμοποιώ που κ που για τις όμορφες ιδέες - θέματα του !!

Θα ήθελα την βοήθεια σας :

Θέλω να δημιουργήσω ένα κουμπί σε μια φόρμα μου που θα ανοίγει το πρόγραμμα 'Εξερεύνηση των Windows' (το εύκολο κομμάτι) αλλά παράλληλα θα δημιουργεί φάκελο με την ονομασία ενός συγκεκριμένου πεδίου (πχ. id = integer) ... αν υπάρχει ήδη ο φάκελος τότε απλά θα μου ανοίγει το πρόγραμμα 'Εξερεύνηση των Windows' στο συγκεκριμένο φάκελο.

Η ιδέα είναι ουσιαστικά να έχω διαφορετικό φάκελο ανά πελάτη-id μου ... και σε κάθε φάκελο έτσι να τοποθετήσω εγώ ότι θέλω ...

Ευχαριστώ πολύ !!

john-john 13-03-12 19:32

Βρήκα την μισή λύση του προβλήματος ... ψάχνοντας στο forum :

If Dir("C:" & "\" & "Temp" & "\" & attribute_name, vbDirectory) = "" Then
MkDir ("C:" & "\" & "Temp" & "\" & attribute_name)
End If

Έτσι φτιάχνω τον φάκελο ... Μια χαρά !!
Όμως πατώντας το κουμπί θέλω επίσης να ανοίγει και το 'Εξερεύνηση των Windows' στον συγκεκριμένο φάκελο που δημιούργησε ... καμία ιδέα ??

Tasos 13-03-12 23:52

Καλησπέρα Γιάννη!

Πληροφοριακά σου λέω ότι η έκφραση 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

Τάσος

john-john 14-03-12 08:20

Καλημέρα Τάσο,

Ευχαριστώ πάρα πολύ !!
Με βοήθησες απίστευτα ... συνδίασα τα κομμάτια του κώδικα σου κ όλα μια χαρά !!


Η ώρα είναι 07:16.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2