koppeling naar Excel in header

Status
Niet open voor verdere reacties.

bkoppers

Gebruiker
Lid geworden
11 jan 2011
Berichten
110
Ik heb een super vba code gevonden om snel mijn koppelingen in mijn word doc te wijzigen.
Echter in mijn header staan ook koppelingen en deze neem onderstaande code niet mee, wie kan/wil mijn code aanvullen zodat ook de header koppelingen worden meegenomen.
Alvast bedankt.

Code:
Sub changeSource()
Dim fieldCount As Integer, x As Long
Dim dlgSelectFile As FileDialog  'FileDialog object
Dim thisField As Field
Dim selectedFile As Variant    'must be Variant to contain filepath of selected item
Dim NewFile As Variant


'create FileDialog object as File Picker dialog box
Set dlgSelectFile = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)


With dlgSelectFile
  .Title = "Select the new source file"
  .InitialFileName = ActiveDocument.Path
  .Filters.Clear 'clear filters
  .Filters.Add "Microsoft Excel Files", "*.xls, *.xlsb, *.xlsm, *.xlsx" 'filter for only Excel files
  .AllowMultiSelect = False
'use Show method to display File Picker dialog box and return user's action
    If .Show = -1 Then

        'step through each string in the FileDialogSelectedItems collection
        For Each selectedFile In .SelectedItems
            NewFile = selectedFile    'gets new filepath
        Next selectedFile
    Else   'user clicked cancel
    End If
End With
Set dlgSelectFile = Nothing

With ActiveDocument
  fieldCount = .Fields.Count
  For x = 1 To fieldCount
    With .Fields(x)
'      If .Type = 56 Then
'        'only update Excel links. Type 56 is an excel link
        Debug.Print .LinkFormat.SourceFullName
        .LinkFormat.SourceFullName = NewFile '
        .Update
        .LinkFormat.AutoUpdate = False
        DoEvents
'      End If
    End With
  Next x
End With

End Sub
 
Je kan eens kijken of dit werkt.
Code:
Dim oStory As Object
Dim fld As Field
    With ActiveDocument
        For Each oStory In .StoryRanges
            For Each fld In oStory.Fields
                If .Type = 56 Then
                    fld.LinkFormat.SourceFullName = NewFile
                    fld.Update
                    fld.LinkFormat.AutoUpdate = False
                    DoEvents
                End If
            Next fld
        Next oStory
    End With
Anders een voorbeeldje, want ik heb geen tijd om het na te maken.
 
Bedankt voor je reactie, jou code doet het zelfde als de mijne, de velden in het hoofdbestand worden netjes vervangen maar in de header niet.
ik zal proberen een voorbeeld bestand te maken, mijn orgineel is te groot om hier te plaatsen :eek:
 
Ik heb nog meer varianten :). Wacht wel even op je voorbeeldje.
 
Ik heb onderstaande code losgelaten op mijn document en het resultaat is het aantal velden in het hoofdbestand en niet de velden in de header
Code:
Sub CountFields()
    

    MsgBox ActiveDocument.Fields.Count

End Sub
 
@octafish, had je toevallig nog kans gezien om naar mijn bestandje te kijken :eek:
 
Gekeken wel :). Ik zal er nog even een nieuwe macro bij verzinnen die werkt.
 
Ik ben er nog mee aan het stoeien; het is wat lastiger dan ik dacht :).
 
Het sluimert nog een beetje; de codes die ik heb gevonden blijken geen van alle goed te werken op links in een header/footer. Dat wordt waarschijnlijk zelf iets bedenken :).
 
tja daar was ik al bang voor, ik heb ook al vanalles wat ik vond geprobeerd. Helaas reikt mijn kennis van vba (nog) niet ver genoeg om zelf te bedenken.
hopelijk vinden we uiteindelijk toch de oplossing :eek:
 
Mijn kennis is op dit moment groter dan mijn tijd; ik denk wel dat het mogelijk is. Dus ik hou het in beraad :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan