• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Application.FileSearch 2007 Gehele bestandsnaam

Status
Niet open voor verdere reacties.

aris85

Gebruiker
Lid geworden
25 mrt 2010
Berichten
34
In 2007 werkt Application.FileSearch niet meer. Ik heb een lijst nodig van alle rapportages die in een bestand zijn weergegeven. Deze ga ik vervolgens omzetten naar pdf en daarna koppelen aan het goede mail adres en versturen.

nu heb ik het volgende:

Code:
Sub bestandenindir()
Dim i As Integer

sDir = Dir$(sPath & "*.xls", vbNormal)

    Do Until LenB(sDir) = 0
      i = i + 1
        Cells(i + 1, 1).Select
        ActiveCell = sDir

        sDir = Dir$

        Loop

End Sub

Dit levert echter niet de gehele bestandsnaam op nl alleen maar test.xls en ik wil ook c:documentssettings/ etc etc hebben

Waar gaat het verkeerd en hoe pas ik de code aan?
 
Laatst bewerkt door een moderator:
Code:
Sub Test()
    With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
        For Each fl In .Files
            If Right(fl.Name, 4) = ".xls" Then 
                c0 = c0 & ThisWorkbook.Path & "\" & fl.Name & "|"
            End If
        Next
        [A:A].ClearContents
        [a1].Formula = "Bestandsnaam"
        [A2].Resize(UBound(Split(c0, "|"))) = WorksheetFunction.Transpose(Split(c0, "|"))
    End With
End Sub
 
Warme bakkertje,

Ik heb de code geprobeerd maar hij geef een fout bij de eerste regel.
Code:
With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
Ongeldige procedure aanroep of ongeldig argument
 
Warme bakkertje,

Ik heb de code geprobeerd maar hij geef een fout bij de eerste regel.
Code:
With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
Ongeldige procedure aanroep of ongeldig argument

Is jouw bestand wel reeds opgeslagen op de harde schijf?
 
Wigi,

Is jouw bestand wel reeds opgeslagen op de harde schijf?

Ik heb het bij een bestand gedaan dat wel opgeslagen was en het werkt wel.

Sorry , foutje van mij.
 
Uiteraard werkt dit wel :p:p:p
 
Ik krijg een foutmelding bij de laatste regel van de macro...

"mismatch en debug"

Maar ik heb geen idee wat er niet klopt. Bestand is opgeslagen.
 
Probeer het dan zo eens
Code:
Sub Test()
    With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
        For Each fl In .Files
            If [COLOR="Red"]Right(fl.Name, 5) = ".xlsx"[/COLOR] Then 
                c0 = c0 & ThisWorkbook.Path & "\" & fl.Name & "|"
            End If
        Next
        [A:A].ClearContents
        [a1].Formula = "Bestandsnaam"
        [A2].Resize(UBound(Split(c0, "|"))) = WorksheetFunction.Transpose(Split(c0, "|"))
    End With
End Sub
 
Code:
Sub Test()
  With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
    For Each fl In .Files
      If Right(fl.Name, 4) = ".xls" Then 
        c0 = c0 & fl.Path & "|"
      End If
    Next
    [A:A].ClearContents
    [A1] = "Bestandsnaam"
    if Ubound(split(c0,"|"))>-1 Then [A2].Resize(UBound(Split(c0, "|"))) = WorksheetFunction.Transpose(Split(c0, "|"))
    End With
End Sub
alternatief
Code:
Sub Test()
  With CreateObject("scripting.filesystemobject").GetFolder(ThisWorkbook.Path)
    For Each fl In .Files
      c0 = c0 & fl.Path & "|"
    Next
    [A:A].ClearContents
    [A1] = "Bestandsnaam"
    sq=filter(split(c0,"|"),"xls")
    if Ubound(sq)>-1 Then [A2].Resize(UBound(sq)) = WorksheetFunction.Transpose(sq)
    End With
End Sub
hiermee worden alle bestanden met .xls, .xlsx, xlsm etc. weergegeven
NB bij filescriptingobject wordt met fl.Path de, wat elders 'Fullname' heet (het volledige pad en bestandsnaam), weergegeven.
 
Laatst bewerkt:
Doordat jullie verwijzen naar thisworkbook.path worden de bestanden gezocht in de map waar mijn persoonlijke macro's staan.

Dat wil ik juist niet hebben. hij moet zoeken in de map waar mijn excel bestand ook in is opgeslagen....
 
Heb je de macro soms in je persoonlijke macromap gestoken want ThisWorkbook.Path geeft altijd de map waarin het bestand opgeslagen is.
 
ja dat heb ik inderdaad gedaan omdat ik die macro vaak nodig heb bij verschillende mappen....

Bewuste keuze dus! Maar hoe kan ik daar dus omheen werken. Nu gedaan door de macro ook in het bestand te hangen maar dan heb ik altijd macro's in bestanden en dat werkt niet prettig
 
Gebruik ipv ThisWorkbook eens ActiveWorkbook
 
ThisWorkbook: het werkboek dat de macro bevat die nu wordt uitgevoerd.

Activeworkbook: het werkboek dat in de userInterface actief is (na activate, select, .open, .add)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan