Opdatere stien på diagramkæder mellem Excel og Word via VBA.
HejProblemstilling:
Jeg står og skal bruge en metode til at ændre stien på alle kæder i mellem et worddokument og et excel dokument, via en makro i et excel dokument.
Altså den skal ændre stien i kæden fra f.eks. c:/dokumenter/fil.xls til stien på det aktive excel-dokument, hvorfra makroen køres.
Jeg har lavet en lidt længere beskrivelse jf. nedenfor...
Beskrivelse af problemstilling.
Jeg har et excel dokument - hvor jeg via en makro generer noget data, som jeg har baseret en række diagrammer på.
I løbet af kørslen af af makroen ændres dataen flere gange - hvorfor der vil blive lavet x antal serier af diagrammer.
Disse serier af diagrammer skal så "sættes ind" i en række word-dokumenter. Hvilket jeg havde antaget kunne gøres via kædefunktionen. I den forbindelse ville jeg lave et "standard-dokument", hvor der kædes til de enkelte diagrammer. Herved skal word-dokumentet mellem hver "serie", hvorefter kæderne skal opdateres og derefter afbrydes.Så langt så godt, men når stien til excel-filen ændres, så kan koden ikke køres.
Jeg har forsøgt mig med et par forskellige metoder - og jeg har haft succes med en metode til at lave de samme handlinger bare ved tekst.
Kode til at opdatere kæde:
'opdatering af kæder
Const kædeId = " LINK Excel.Sheet.8 "
Const kildeXls = "dataark.xls"
On Error GoTo videre
Set word = CreateObject("word.application")
With word
.Documents.Open Filename:=(ThisWorkbook.Path & "\standard.doc")
For x = 1 To .activedocument.fields.Count
Kode = .activedocument.fields(x).code
If InStr(Kode, kædeId) = 1 Then
.activedocument.fields(x).LinkFormat.SourceFullName = ThisWorkbook.Path & "\" & kildeXls
End If
Next x
End With
GoTo videre
videre:
word.activedocument.Save
word.Application.Quit
Set word = Nothing
Kode til at opdatere og afbryde kæder af tekst:
Set word = CreateObject("word.application")
Set doc = word.Documents.Open(ThisWorkbook.Path & "\standard.doc")
With doc.Activate
For Each aField In doc.fields
If aField.LinkFormat.AutoUpdate = False _
Then aField.LinkFormat.Update
aField.LinkFormat.BreakLink
Next aField
doc.SaveAs ThisWorkbook.Path & "\Serie " & Serie(i) & ".doc"
End with
Forslag til løsning:
Jeg har prøvet at arbejde med Shapes i stedet for fields - men synes ikke rigtig det lykkes for mig...
Jeg vil sætte stor pris på hvis jeg kunne få lidt hjælp til denne problemstilling - og hvis jeg skal uddybe min beskrivelse så sig endelig til...
Venlig Hilsen
Martin