Avatar billede multicoder Nybegynder
30. august 2006 - 11:51 Der er 3 kommentarer

Hjælp til Word vba script

Hej

Jeg har brug for hjælp til at udvide mit script fra at kunne gennemse en mappe, til også at kunne medtage undermapper. Der er vel noget med at jeg skal have lavet en rekursiv funktion, som starter forfra når den løber ind i en mappe. Jeg har ikke den store VBA erfaring, så har brug for et godt hint.

pft


Private Sub CommandButton1_Click()

    Dim strFilePath As String
    Dim strPath As String
    Dim intCounter As Integer
    Dim strFileName As String
    Dim OldServer As String
    Dim objDoc As Document
    Dim objTemplate As Template
    Dim dlgTemplate As Dialog
    Dim nServer As Integer

    'hardcode the name of the old server.

    OldServer = "server1"
    nServer = Len(OldServer)
    strFilePath = InputBox("What is the folder location that you want to use?")


    If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"
        strFileName = Dir(strFilePath & "*.doc")
       
        Do While strFileName <> ""
        Set objDoc = Documents.Open(strFilePath & strFileName)
        Set objTemplate = objDoc.AttachedTemplate
        Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
        strPath = dlgTemplate.Template
   
        objDoc.AttachedTemplate = NormalTemplate

    strFileName = Dir()
    objDoc.Save
    objDoc.Close

    Loop

    Set objDoc = Nothing
    Set objTemplate = Nothing
    Set dlgTemplate = Nothing
   

End Sub
Avatar billede supertekst Ekspert
30. august 2006 - 12:44 #1
Lidt inspiration - måske:

Sub CommandButton1_Click()
Dim sfList

    Dim strFilePath As String
    Dim strPath As String
    Dim intCounter As Integer
    Dim strFileName As String
    Dim OldServer As String
    Dim objDoc As Document
    Dim objTemplate As Template
    Dim dlgTemplate As Dialog
    Dim nServer As Integer

    'hardcode the name of the old server.


    OldServer = "filserver"
    nServer = Len(OldServer)
    strFilePath = InputBox("What is the folder location that you want to use?")


    OldServer = "filserver"
    nServer = Len(OldServer)
    strFilePath = InputBox("What is the folder location that you want to use?")

    If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"
        sfList = bygSubFolderList(strFilePath)  'HER OPBYGGES LISTE OVER SUBFOLDERS PÅ DET VALGTE STINIVEAU
        MsgBox (sfList)                        'Her vises disse
       
Rem men denne process skal gentages for hver subfolder - indtil der ikke er flere

        strFileName = Dir(strFilePath & "*.doc")
       
        Do While strFileName <> ""
        Set objDoc = Documents.Open(strFilePath & strFileName)
        Set objTemplate = objDoc.AttachedTemplate
        Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
        strPath = dlgTemplate.Template
   
    If LCase(Left(strPath, nServer)) = LCase(OldServer) Then
        objDoc.AttachedTemplate = NormalTemplate
    End If

    strFileName = Dir()
    objDoc.Save
    objDoc.Close

    Loop

    Set objDoc = Nothing
    Set objTemplate = Nothing
    Set dlgTemplate = Nothing

End Sub
Private Function bygSubFolderList(folderspec)  'HER OPBYGGES LISTEN
    Dim fs, f, f1, s, sf
    s = ""
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set sf = f.SubFolders
    For Each f1 In sf
        s = s & f1.Name + "|"
    Next
   
    bygSubFolderList = s
End Function
Avatar billede multicoder Nybegynder
30. august 2006 - 13:23 #2
Tak for dit svar

Den er desværre ikke helt nok, da jeg pt. ikke ved hvor mange undermapper der er.

Hvis nu jeg looper en mappe igennem med Dir hvordan kan jeg så se om den enkle ”fil” er en mappe eller om det er en ”normal” fil.
Avatar billede supertekst Ekspert
30. august 2006 - 15:48 #3
Det var også kun lidt inspiration - skal nok prøve lidt mere.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester