Avatar billede strandgaard Nybegynder
20. juni 2005 - 10:27 Der er 7 kommentarer og
2 løsninger

Styring af tekstboks med makro

Jeg har lavet en makro der skal styre baggrundsfarven i en tekstboks i en Wordskabelon. Her er starten på det....

If ComboBoxTopFar = "" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 255)
ElseIf ComboBoxTopFar = "Hvid" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 255)

Mit problem er nu, at mens skabelonen kører på min egen PC, kan makroen godt finde "Text Box 12", men når den køres på en anden maskine vil den ikke. Hvordan styrer jeg navnet på tekstboksen i word, og er der et sted hvor jeg kan se hvordan word navngiver de tekstbokse jeg opretter?
Avatar billede rvm Nybegynder
20. juni 2005 - 12:20 #1
Prøv denne lille kode :-)

'Gennemløber alle shapes
For Each txtb In ActiveDocument.Shapes

'Giver shape navn
MsgBox txtb.Name

'Omdøber shape'en
If txtb.name = "Tekstboks 12" then
txtb.Name = "Hej"
endif

Next
Avatar billede strandgaard Nybegynder
20. juni 2005 - 12:45 #2
Hmm, så langt så godt, men hvordan styrer jeg at word åbenbart ikke giver mine textbox'e i min wordskabelon det samme navn, hvis jeg åbner den på en anden computer?
Avatar billede strandgaard Nybegynder
20. juni 2005 - 14:45 #3
Ingen andre der kan hjælpe med at "fastholde" navnet på en tekstboks i Word?
Avatar billede stefanfuglsang Juniormester
20. juni 2005 - 15:13 #4
rvms eksempel er godt nok - du kan så selv styre navnene på boksen, og dernæst gemme skabelonen - de nye navne bør være de samme på en anden maskine (men man ved aldrig med Word ...)

Bemærk dog at "Tekstboks 12" i hans eksempel skal være "Text Box 12", som du også selv skriver.

Ellers kan du markere din box og køre følgende:

Sub Makro6()
    Selection.ShapeRange(1).Name = "MinBox" 
End Sub

Boksen hedder nu MinBox, uanset hvad den hed før
Avatar billede strandgaard Nybegynder
20. juni 2005 - 15:28 #5
Enten forstår jeg ikke helt hvad i så mener, eller også har jeg ikke forklaret problemet helt godt noh :-)

I mit word-doc har jeg to tekstbokse, som jeg (word) kalder text box 12 og 13. Når skabelonen åbnes på en anden maskine, kan disse to navne ikke genfindes som værende navnene på de to text box'e. Hvordan skal jeg med jeres råd kode min makro, så den lige gyldigt hvad word vælger at kalde tekstboxene ved opstart kan finde dem og evt. navngive dem så min kode kan kører på de andre maskiner også?
Avatar billede strandgaard Nybegynder
20. juni 2005 - 15:52 #6
Hmm, kan være jeg ikke er helt god til at forklare mit problem.... her kommer min kode:

If ComboBoxTopFar = "" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 255)
ElseIf ComboBoxTopFar = "Hvid" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 255)
ElseIf ComboBoxTopFar = "Blå" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 255)
ElseIf ComboBoxTopFar = "Rød" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)
ElseIf ComboBoxTopFar = "Grøn" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 0)
ElseIf ComboBoxTopFar = "Gul" Then
    ActiveDocument.Shapes("Text Box 12").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 0)
End If

If ComboBoxBundFar = "" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 255)
ElseIf ComboBoxBundFar = "Hvid" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 255)
ElseIf ComboBoxBundFar = "Blå" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 255)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 255)
ElseIf ComboBoxBundFar = "Rød" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)
ElseIf ComboBoxBundFar = "Grøn" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 0)
ElseIf ComboBoxBundFar = "Gul" Then
    ActiveDocument.Shapes("Text Box 13").Select
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 0)
End If



Spørg endelig hvis det er noget rod det hele. :~)
Avatar billede stefanfuglsang Juniormester
21. juni 2005 - 11:03 #7
Jeg tror godt jeg forstår dit problem - "Text Box 12" og "Text Box 13" hedder måske
"Text Box 4" og "Text Box 5" når du åbner skabelonen et andet sted.

rvms forslag går på, at du selv definerer hvad de skal hedde.

Brug en af forslagene til at ændre navnet "Text Box 12" til "BoxA" og "Text Box 13" til "BoxB" (eller nogle mere fornuftige navne) og gem skabelonen.

Ændr dernæst alle referencer i din kode, f.eks. ActiveDocument.Shapes("Text Box 13").Select til ActiveDocument.Shapes("BoxB").Select  .
Avatar billede strandgaard Nybegynder
21. juni 2005 - 12:08 #8
Ja, jeg har også lige selv fattet at det var sådan man skulle gøre :-)

Jeg takker mange gang for hjælpen. Hvis du (stefanfuglsang) lige smider et svar også, så deler jeg pointene imellem jer :-)
Avatar billede stefanfuglsang Juniormester
22. juni 2005 - 09:28 #9
OK!
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