Probleem met het gebruik van Dir functie:

Status
Niet open voor verdere reacties.

BarbaraMarth

Gebruiker
Lid geworden
4 mei 2020
Berichten
9
Hallo,

Ik heb een stukje code gemaakt om *doc documenten in een folder op te slaan als PDF.
Het probleem is dat hij niet enkel de *doc documenten behandelt, maar ook de *docx documenten, en dat wil ik niet.
Hoe kan ik de volgende lijn herschrijven zodat hij enkel *doc files neemt en niet *docx
Code:
myFile = Dir$(PathToUse & "*.doc")

Hier is mijn volledig stukje code:
Code:
Sub opslaanAlsPDF()
Dim myFile As String
Dim PathToUse As String
Dim myDoc As Document
'C:\Users\barbara.blancquaert\Desktop\werkdir_omzetten_naar_PDF
PathToUse = "C:\Users\barbara.blancquaert\Desktop\werkdir_omzetten_naar_PDF\src_docs\"
SavePath = "C:\Users\barbara.blancquaert\Desktop\werkdir_omzetten_naar_PDF\pdf_docs\"
myFile = Dir$(PathToUse & "*.doc")
'bizar, hij neemt als je *doc meegeeft, zowel de *doc als de *docx files
While myFile <> ""
    'Open document
    Set myDoc = Documents.Open(FileName:=PathToUse & myFile)
    newName = Replace(myFile, ".doc", ".pdf")
    myDoc.SaveAs SavePath & newName, Fileformat:=wdFormatPDF
    myDoc.Close
    'Next file in folder
    myFile = Dir$()
Wend
End Sub
 
Laatst bewerkt:
Ik denk dat er hier en daar wat \ tekens zijn weg gevallen waardoor het onduidelijk wordt.
Gebruik codetags als je code plaatst.
 
Geen enkel probleem hier om uit alle .docx en andere extensies alleen de .doc op te halen met de Dir functie.

Code:
Sub TST()
    pad = "C:\Users\Username\Documents\"
    doc = Dir(pad & "*.doc")
    While doc <> ""
        Debug.Print doc
        doc = Dir()
    Wend
End Sub
 
Laatst bewerkt:
@Edm

In Office 2010 werkt het niet zoals bij jou: all docx's en docm's komen ook mee.

Oplossing:

Code:
Sub M_snb()
    c00 = Dir("G:\OF\*.doc")
    Do While c00 <> ""
       c01 = c01 & vbLf & c00
       c00 = Dir
    Loop
    
    MsgBox Join(Filter(Filter(Split(c01, vbLf), ".docm", 0), ".docx", 0), vbLf)
End Sub
 
Het simpele voorbeeldje dat ik plaatste werkt hier exact hetzelfde in zowel Office 2003, 2007, 2010 als in 2016.
Met als resultaat dus alleen de .doc bestanden.
 
Laatst bewerkt:
Dan ligt het aan de windows-versie.
 
Ook jouw code uit #1 geeft hier alleen de .doc bestanden terug.
 
Ik heb Office Professional Plus 2016 en windows 10.
Maar windows versie zou toch geen invloed mogen hebben.
 
Die versies gebruik ik ook.
Geen idee waarom het bij jou niet goed gaat.

Het blijft vreemd, maar je kan dit als workaround gebruiken:
Code:
Sub opslaanAlsPDF()
    Dim myFile As String
    Dim PathToUse As String
    Dim myDoc As Document
    
    PathToUse = "C:\Users\barbara.blancquaert\Desktop\werkdir_omzetten_naar_PDF\src_docs\"
    SavePath = "C:\Users\barbara.blancquaert\Desktop\werkdir_omzetten_naar_PDF\pdf_docs\"
    
    myFile = Dir(PathToUse & "*.doc")
    While Right(myFile, 4) = ".doc"
        Set myDoc = Documents.Open(Filename:=PathToUse & myFile)
        newName = Replace(myFile, ".doc", ".pdf")
        myDoc.SaveAs SavePath & newName, FileFormat:=wdFormatPDF
        myDoc.Close
        myFile = Dir()
    Wend
End Sub
 
@edm

Met Getobject gaat het veel sneller.
Right(" ",1)="c" lijkt me ook al voldoende
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan