hoe krijg je de naam, path van een geselecteerde file in een folder (Explorer Window)

Status
Niet open voor verdere reacties.
Waarom werkt onderstaande functie niet, er is vast een logische verklaring, echter niet voor mij.

Code:
Sub RenameFiles()
Dim sourceFiles As Variant
Dim sourceFile As String
Dim targetFile As String
Dim n As Integer

sourceFiles = Dir("f:\10001\*.msg")
    While sourceFiles <> ""
        n = n + 1
        sourceFile = "f:\10001\" & sourceFiles
        targetFile = "newName3_" & n & ".msg"
       ' MsgBox (Len(Dir("f:\10001\" & targetFile)))
        If Len(Dir(targetFile)) = 0 Then
            'Target file bestaat niet
            Debug.Print sourceFiles
            'rename
            Name sourceFile As "f:\10001\" & targetFile
        End If
        

       sourceFiles = Dir()
    Wend
End Sub

Maar verwijder ik de If (test) dan werk de functie wel.

Code:
Sub RenameFiles()
Dim sourceFiles As Variant
Dim sourceFile As String
Dim targetFile As String
Dim n As Integer

sourceFiles = Dir("f:\10001\*.msg")
    While sourceFiles <> ""
        n = n + 1
        sourceFile = "f:\10001\" & sourceFiles
        targetFile = "newName3_" & n & ".msg"
       ' MsgBox (Len(Dir("f:\10001\" & targetFile)))
      
            'Target file bestaat niet
            Debug.Print sourceFiles
            'rename
            Name sourceFile As "f:\10001\" & targetFile
 
        

       sourceFiles = Dir()
    Wend
End Sub

Ik wil natuurlijk controleren of de file al bestaat, om de error af te vangen
 
Haha, je bent net in VBA en je hebt de nadelen van bepaalde objecten al gevonden.
Probeer de boel te scheiden zoals hieronder ;


Code:
Sub RenameFiles()
    Dim sourceFile As String
    Dim targetFile As String
    Dim Message As String
    Dim Messages As Collection
    Set Messages = GetFiles("f:\10001\*.msg")
    Dim n As Integer
    For n = 1 To Messages.Count
        sourceFile = "f:\10001\" & Messages(n)
        targetFile = "newName3_" & n + 1 & ".msg"
        If GetFiles(targetFile).Count > 0 Then
            Name sourceFile As "f:\10001\" & targetFile
        End If
    Next
End Sub

Function GetFiles(Pattern As String) As Collection
    Dim tmp As Variant
    Dim ret As New Collection
    tmp = Dir(Pattern)
    While tmp <> ""
        ret.Add (tmp)
    tmp = Dir()
    Wend
    Set GetFiles = ret
End Function
 
Thanks nu werkt het

Voor de volgers in de code staat een typefoutje

Code:
If GetFiles(targetFile).Count > 0 Then
wordt
If GetFiles(targetFile).Count = 0 Then

Maar dan is de vraag waarom gaf de oplossing die ik had getest, dié onverwachte error. Ik denk dat je daar vast een helder antwoord op kan geven.


Ik ben normaal niet een persoon om voor elk probleempje naar een forum te gaan maar de ondersteuning van o.a aelatik is wel heel waardevol, Echter welk boek geeft me een goede inleiding en welke sites geven voorbeelden.


Lopen jullie ook tegen het volgende aan: Zoek een voorbeeld code 90% is VB.net, C#, VB6 of VBA voor 2007 geen van de gevonden code zijn één op één toepasbaar. :shocked:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan