Avatar billede mp67533 Nybegynder
27. februar 2007 - 18:40

Opdatere stien på diagramkæder mellem Excel og Word via VBA.

Hej

Problemstilling:
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
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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