Forum
ms-office.gr > Forum > Microsoft Office > Visual Basic for Applications (VBA) > Προβλημα με δημιουργια φακελου και υποφακελου.

Visual Basic for Applications (VBA) Ερωτήσεις / Απαντήσεις σε σχέση με τη χρήση της VBA.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 04-07-10, 16:00
Όνομα: Θοδωρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 29-06-2010
Μηνύματα: 32
Προεπιλογή Προβλημα με δημιουργια φακελου και υποφακελου.

Καλησπερα σε ολους!
εχω τον παρακατω κωδικα για να δημιουργησω ενα φακελο με το ονομα μιας μεταβλητης "pvafm" και θελω εναν υποφακελο μεσα στον "pvafm" με το ονομα "pvetos" αλλα με χτυπαει σφαλμα "path no found"...
ο κωδικας...
Dim fso
Dim fol As String

fol = "c:\" & pvafm & " "
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FolderExists(fol)) Then
fso.CreateFolder (fol)
End If

Dim fso2
Dim subfol As String
subfol = "c:\" & pvafm & " \" & pvetos & " "
Set fso2 = CreateObject("Scripting.FileSystemObject")
If Not (fso2.FolderExists(subfol)) Then
fso2.CreateFolder (subfol)
End If

τον πρωτο φακελο μου τον δημιουργει κανονικα,αλλα βγαζει debug στην προτελευταια γραμμη κωδικα " fso2.CreateFolder (subfol)"
που ειναι το λαθος???
Απάντηση με παράθεση
  #2  
Παλιά 04-07-10, 20:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 1.157
Προεπιλογή

Καλησπέρα Θοδωρή!
Θα σου πρότεινα να χρησιμοποιήσεις το παρακάτω:

Κώδικας:
Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal lpPath As String) As Long

Sub test()
    MakeSureDirectoryPathExists "C:\Διαδρομή αρχείου ή φακέλου\" 
' Αν πρόκειται για διαδρομή φακέλου, η συμβολοσειρά του ορίσματος πρέπει να καταλήγει πάντα σε "\"
' δηλαδή: C:\Διαδρομή αρχείου ή φακέλου και ο χαρακτήρας "\"
' Για να καλύψουμε το ενδεχόμενο συντακτικού λάθους,
'που ίσως προκληθεί με την ενοποίηση μεταβλητών , κατά το χτίσιμο της διαδρομής,
' μπορούμε να χρησιμοποιήσουμε κάτι όπως το παρακάτω:
'  xArgument = Replace("C:\" & VarΔιαδρομή &  "\","\\", "\")
End Sub
Ελέγχει αν υπάρχει διαδρομή ενός φακέλου.
Αν δεν υπάρχει ή διαδρομή, η παραπάνω συνάρτηση θα την δημιουργήσει
εφ όσον βέβαια το επιτρέπουν οι ρυθμίσεις δικαιώματων πρόσβασης του τρέχοντος λογαριασμού Windows.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word

Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-10 στις 10:46.
Απάντηση με παράθεση
  #3  
Παλιά 06-07-10, 04:26
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 186
Προεπιλογή

Φίλε Θοδωρή, σαφώς και η MakeSureDirectoryPathExists είναι η καλύτερη λύση για το θέμα σου
όμως έχει αρκετό ενδιαφέρον μια τέτοια υλοποίηση χωρίς "εξωτερική" βοήθεια.

Δοκίμασε λοιπόν και την παρακάτω αναδρομική διαδικασία η οποία κάνει σχεδόν
την ίδια δουλειά με την MakeSureDirectoryPathExists.
Κώδικας:
Sub SecurePath(strPath As String)
    Static stintPos As Integer
    Dim strDir As String

    If Right(strPath, 1) <> "\" Then
        strPath = strPath & "\"
    End If

    stintPos = InStr(stintPos + 1, strPath, "\")
    If stintPos > 0 Then
        strDir = Left(strPath, stintPos)
        If Len(Dir(strDir, vbDirectory)) = 0 Then
            MkDir (strDir)
        End If
        SecurePath strPath
    End If
    stintPos = 0
End Sub
Μπορείς να την καλείς ως εξής:
Κώδικας:
SecurePath "C:\Folder1\Folder2\Folder3\Folder4\Folder5"
Τα λέμε!
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #4  
Παλιά 08-07-10, 19:15
Όνομα: Θοδωρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 29-06-2010
Μηνύματα: 32
Προεπιλογή

τασο και γιαννη αν μπορουσατε λιγο πιο λεπτομερεστερα το που θα γραψω αυτους τους κωδικες απο την στιγμη που αυτες τις ενεργιες που θελω να γινουν, δημιουργια κ ελεγχος φακελων αν υπαρχουν γινετε μετα απο after update 2 δημοσιων μεταβλητων pvafm και pvetos και βαση αυτων δημιουργουνται οι φακελοι,με τα ονοματα αυτων πχ pvafm="343545646" ,pvetos="2010" σε μια διαδρομη πχ "c:\343545646\2010\ ...

φιλικα/θοδωρης
Απάντηση με παράθεση
  #5  
Παλιά 09-07-10, 10:04
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 1.157
Προεπιλογή

Καλημέρα σε όλους!
Αγαπητέ Θοδωρή,
Χαιρέτα μας και... μη μας αγαπάς!

Στη μια λειτουργική μονάδα δηλώνεις τις (δημόσιες) μεταβλητές σου καθώς και τις σταθερές όπως φαίνεται παρακάτω:
Κώδικας:
Option Compare Database
Option Explicit
Public Const PathPrefix As String = "C:"
Public Const PS As String = "\" 'PathSeparator
Public pvafm As String
Public pvetos As String
Στο συμβάν Click ενός κουμπιού ή σε κάποιο άλλο συμβάν στη φόρμα σου
μπορείς να χρησιμοποιήσεις το παρακάτω παράδειγμα:

Κώδικας:
Private Sub cmdMyButton_Click()
    Dim strPath As String
    pvafm = "343545646"    'ή την τιμή από κάποιο πλαίσιο κειμένου
    pvetos = "2010"        'ή την τιμή από κάποιο πλαίσιο κειμένου
    strPath = Replace( _
              PathPrefix & _
              PS & _
              pvafm & _
              PS & _
              pvetos & _
              PS, _
              PS & PS, PS)
    MakeSureDirectoryPathExists strPath
    ' ή
    SecurePath strPath
End Sub
Καλή συνέχεια!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word

Τελευταία επεξεργασία από το χρήστη Tasos : 11-07-10 στις 19:14.
Απάντηση με παράθεση
  #6  
Παλιά 11-07-10, 12:30
Όνομα: Θοδωρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 29-06-2010
Μηνύματα: 32
Προεπιλογή

Τασο καλημερα,οπως επισης κ στα υπολοιπα παιδια του φορουμ...
εχω παθει πλακα εδω μεσα με την ανταποκριση σας,μπραβο!
θα το δοκιμασω τον κωδικα κ θα επανελθω...

φιλικα
θοδωρης
Απάντηση με παράθεση
  #7  
Παλιά 16-07-10, 03:00
Όνομα: Θοδωρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 29-06-2010
Μηνύματα: 32
Προεπιλογή

καλημερα!
Ευχαριστω παιδια ειστε φοβεροι!
δουλεψε!
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Πρόβλημα με δημιουργία newsletter pm4698 Outlook - Ερωτήσεις / Απαντήσεις 6 30-08-11 11:36
[Γενικά] Δημιουργία κουμπιού και δημιουργία νέας λίστας sethii Excel - Ερωτήσεις / Απαντήσεις 3 31-03-11 08:52


Η ώρα είναι 15:54.