Macro gemaakt in VBA Word 2003 werkt niet in Word 2013

Status
Niet open voor verdere reacties.

JohnydeG

Nieuwe gebruiker
Lid geworden
16 okt 2013
Berichten
4
Bijgaande macro zorgt er voor dat in alle RTF-documenten, die in een bepaalde directory staan, worden voorzien van een plaatje (logo).
Deze macro heb ik in Word 2003 gemaakt.
Nu ben ik net over gegaan op Office 2013 en nu werkt deze macro ineens niet meer.
Kunnen jullie kijken waarom hij niet meer werkt?

Ik heb het vermoeden dat VBA van office 2013 de functie 'With Application.FileSearch' niet kent, maar kan geen vervanger hiervoor vinden.
Natuurlijk is het mogelijk de hele macro opnieuw gemaakt wordt, maar daar heb ik te weinig vba-kennis voor.
Dus als iemand mij kan helpen graag.

Code:
sub Voeg_logo_toe()
'
' Voeg_logo_toe Macro
' Macro gemaakt op 6-4-2010 door xxxxxxxxxx.
'
    With Application.FileSearch
    .FileName = "*.rtf"
    
    'Geef hier de locatie op van de sjablonen waar het logo in geplaatst moet worden.
    'LET OP! alle RTF-documenten in deze map worden voorzien van het logo
    
    .LookIn = "P:\Conversie\alle brieven"
     
        If .Execute() > 0 Then
         
            For i = 1 To .FoundFiles.Count
                Documents.Open (.FoundFiles(i))
        
                If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
                    ActiveWindow.Panes(2).Close
                End If

                    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
                        ActivePane.View.Type = wdOutlineView Then
                        ActiveWindow.ActivePane.View.Type = wdPrintView
                    End If
                ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
                '
                'Geef hier onder de locatie en naam van het Logo
                '
                Selection.InlineShapes.AddPicture FileName:= _
                    "P:\Conversie\Logo\R_00pc1_kleur.wmf", LinkToFile:=False, _
                    SaveWithDocument:=True
                
                Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
                    With Selection.ParagraphFormat
                        .LeftIndent = CentimetersToPoints(-3.52)
                        .SpaceBeforeAuto = False
                        .SpaceAfterAuto = False
                    End With

                ActiveDocument.Save

                Documents.Close (SaveChanges)
            
                Next i
            
        End If
    End With
End Sub
 
Ik heb het vermoeden dat VBA van office 2013 de functie 'With Application.FileSearch' niet kent, maar kan geen vervanger hiervoor vinden.

Je vermoeden is juist (sinds 2007).

Heb je al wel op alle Nederlandse fora gezocht (ik vemoed van niet) ?
 
Ik heb gezocht bij:
http://vbadud.blogspot.nl/2006/12/dir-function-in-vba-visual-basic.html
http://www.vbib.be/index.php?/topic/9809-office-2003-naar-2010-with-applicationfilesearch/
http://www.helpmij.nl/forum/showthread.php/574852-Problemen-FileSearch

Kortom er worden oplossingen aangedragen met Scripting.FileSystemObject (snap ik niets van) en met DIR function.
Helaas is mijn kennis van VBA minimaal.
De genoemde macro heb ik ook ooit eens aangeleverd gekregen.
En ik heb alleen zo nu en dan de paden aangepast, of de logo-naam aangepast.
Het vervangen van een hele functie is totaal andere koek voor mij.
Bovendien is het niet maar één functie aanpassen.
Zie waar ik overal op struikel:

Code:
sub Voeg_logo_toe()
'
' Voeg_logo_toe Macro
' Macro gemaakt op 6-4-2010 door xxxxxxxxxx.
' aangepast op 17-10-2013 i.v.m. office 2013
'
   ' With Application.FileSearch
   ' .FileName = "*.rtf"
    
    
    'Geef hier de locatie op van de sjablonen waar het logo in geplaatst moet worden.
    'LET OP! alle RTF-documenten in deze map worden voorzien van het logo
    
    '.LookIn = "P:\Conversie\alle brieven"
    sDir = Dir$("P:\Conversie\alle brieven" & "*.rtf", vbNormal)
     
       ' If .Execute() > 0 Then execute kent ie niet....
       ' dus ik moet zorgen dat ik hier een soort loop krijg zodat hij alle bestanden af gaat.
         
            For i = 1 To .FoundFiles.Count  'een for-loop leek me wel aardig, maar deze werkt niet, want hij kent de functie . foundfiles.Count niet
                Documents.Open (.FoundFiles(i))
        
                If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
                    ActiveWindow.Panes(2).Close
                End If ' geen idee waarom deze if nodig is en wat hij doet.

                    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
                        ActivePane.View.Type = wdOutlineView Then
                        ActiveWindow.ActivePane.View.Type = wdPrintView
                    End If ' geen idee waarom deze if nodig is en wat hij doet.
                ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader ' waarschijnlijk zorgt dit er voor dat hij in de koptekst terecht komt.
                '
                'Geef hier onder de locatie en naam van het Logo
                '
                Selection.InlineShapes.AddPicture FileName:= _
                    "P:\Conversie\Logo\R_00pc1_kleur.wmf", LinkToFile:=False, _
                    SaveWithDocument:=True
                
                Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
                    With Selection.ParagraphFormat
                        .LeftIndent = CentimetersToPoints(-3.52)
                        .SpaceBeforeAuto = False
                        .SpaceAfterAuto = False
                    End With

                ActiveDocument.Save

                Documents.Close (SaveChanges)
            
                Next i
            
        End If
    End With
End Sub
 
Schakel dan een deskundige in.
 
En waarom zou jij niet willen of kunnen helpen?
Dit Forum is er toch voor om van elkaar te kunnen leren?
Of vind je me te dom om jouw tijd hier aan te besteden?
Zoals ik in mijn eerste melding had opgemerkt ben ik geen smartie op VBA-gebied.
 
Laatst bewerkt:
Ik wil graag een makro maken die alle documenten in een directory opent en er een plaatje in zet.
Hier had ik een makro voor in office 2003, maar nu ik over ben naar office 2013 herkent VBA verschillende functies niet meer.
Als het maar een functie is die ik aan moet passen, dan kwam ik er misschien wel uit, maar ik moet verschillende functies herschrijven en daar raak ik de draad kwijt.
Is er iemand die mij hierbij wil helpen?
 
Je macro kan een stuk korter. En gebruik het DIR commando op de juiste manier; de Help is daar vrij duidelijk in, dus als je het commando niet snapt, druk dan eens op <F1> ;)
Code:
Sub Voeg_logo_toe()
Dim sDir As String, sPad As String

    sPad = "H:\Handleidingen\"
    sDir = Dir$(sPad & "*.doc", vbNormal)
    Do While Not sDir = ""
        sDir = Dir
        Documents.Open (sPad & sDir)
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.InlineShapes.AddPicture FileName:="H:\Handleidingen\\511qX4GsbnL._SS500_.jpg", _
            LinkToFile:=False, SaveWithDocument:=True
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            With Selection.ParagraphFormat
                .LeftIndent = CentimetersToPoints(-3.52)
                .SpaceBeforeAuto = False
                .SpaceAfterAuto = False
            End With
        ActiveDocument.Close SaveChanges:=wdSaveChanges
    Loop
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan