Avatar billede koppelgaard Praktikant
10. august 2011 - 18:12 Der er 4 kommentarer og
1 løsning

Indsætte billede med caption i word med brug af VBA

Jeg vil gerne indsætte et billede word med filnavn som caption.
Jeg har fundet nedenstående kode som virker fint med undtagelse af den sidste linie, indsætte caption:
Selection.InsertCaption Label:="Figure", TitleAutoText:="", Title:=": " & picName, _
Position:=wdCaptionPositionBelow

Her kommer runtime error 4198
Jeg har prøvet både i word 2003 og 2007.

KODEN:
http://www.vbaexpress.com/forum/archive/index.php/t-6100.html

Option Explicit
Sub InsertPicture()
Dim Doc As Dialog
Dim BClicked As String
Dim picPath As String
Dim picName As String
Dim oRg As Range
Set Doc = Dialogs(wdDialogFileOpen)
With Doc
.Name = "*.jpg"
BClicked = .Display
picName = .Name 'picName holds the picture name
End With
picPath = CurDir 'picPath holds the picture path
Selection.InlineShapes.AddPicture FileName:=picPath & "\" & picName
Selection.TypeParagraph
Selection.InsertCaption Label:="Figure", TitleAutoText:="", Title:=": " & picName, _
Position:=wdCaptionPositionBelow
End Sub

Også så simpel kode som
Selection.InsertCaption Label:="noget tekst"
fejler !!?
Avatar billede Lene Fredborg Ekspert
10. august 2011 - 19:52 #1
Koden, du har fundet, er lavet til en engelsk version af Word, og din version er sikkert dansk.

InsertCaption kræver, at den angivne "Label" findes. Navnet på denne label står til "Figure", og den findes ikke i dansk Word, med mindre du har tilføjet den (det samme gælder din test: "noget tekst").

Gør følgende:
I linjen, som starter med:
Selection.InsertCaption Label:="Figure", TitleAutoText:=""
ændr "Figure" til "Figur" og prøv så igen. Så er problemet sandsynligvis løst.

Du kan også via VBA tilføje ekstra CaptionLabels, men det er der ingen grund til, hvis du ikke skal bruge dem:

Application.CaptionLabels.Add Name:="Figure"
tilføjer label "Figure", som ville få den oprindelige kode til at køre - men hvis du skriver på dansk, skal din label ikke være på engelsk.

Følgende makro vil vise de CaptionLabels, der er defineret hos dig:

Sub ShowCaptionLabels()
    Dim n As Long
    With Application
        For n = 1 To .CaptionLabels.Count
            MsgBox .CaptionLabels(n).Name
        Next n
    End With
End Sub
Avatar billede Lene Fredborg Ekspert
10. august 2011 - 19:54 #2
Tilføjelse:
"Label" er ikke selve figurteksten men den tekst, der automatisk indsættes foran nummeret.
Avatar billede koppelgaard Praktikant
10. august 2011 - 20:17 #3
Du har ret!
Hvis jeg ændre "Figure" til "Figur".

Men faktisk er min Excel version engelsk.
I hvert fald er alle menuer på engelsk. men indsættes ved indsættelse af caption bruges "Figur".
Du må gerne sende et svar.
Avatar billede Lene Fredborg Ekspert
10. august 2011 - 21:39 #4
Det var godt, at det løste problemet.
Selv om du har engelsk Office-version, står dine sprogindstillinger under Kontrolpanelet givetvis til dansk, og det medfører "sprogforvirring" i nogle sammenhænge.
Avatar billede koppelgaard Praktikant
11. august 2011 - 08:39 #5
Ja det er nok det der er forklaringen. Tak for hjælpen :-)
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
Tag et kursus i Word og øg effektiviteten

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