Avatar billede dsj1972 Juniormester
16. marts 2009 - 19:49 Der er 11 kommentarer og
1 løsning

kan man lave en VBA kode i word til at vende tekst i celler

Hejsa,

Jeg har oprettet en dokument som laver nogle celler via nogle input´s men mangler muligheden for at kunne vende teksten i cellerne 180 grader, har ledt og ledt men umiddelbart er jeg indtil nu kun faldet over mulighed for at benytte wordart og ellers klippe klister metode med billed.

Men det kan da virkelig ikk være rigtig at man ikk har en løsninge at kunne rotere testen 180 grader.


Det er mit store håb at der er nogle skrappe eksperter som kan bikse en eller anden form for kode som kan vende testen 180 grader.

Alternativt kunne man måske grupperer hele tabellen og vende det hele på den måde via "shapes" tror jeg nok det er.

På forhånd tak!!

Mvh dsj
Avatar billede falster Ekspert
16. marts 2009 - 22:44 #1
Funktionen hedder StrReverse.

Du kan evt. Google på den. Et eksempel

http://www.tech-archive.net/Archive/Word/microsoft.public.word.vba.beginners/2004-10/0026.html
Avatar billede Lene Fredborg Ekspert
16. marts 2009 - 23:01 #2
Du har tidligere stillet (et uafsluttet) spørgsmål om det samme:
http://www.eksperten.dk/spm/865256

Jeg gav dig dengang link til en artikel med nogle muligheder (linket indsat her også):
http://word.mvps.org/FAQs/DrwGrphcs/UpsideDownText.htm

VBA kan kun udrette noget, som Word i sig selv giver mulighed. Og Word kan _ikke_ vende rigtig tekst 180 grader. Så hvis det drejer sig om tekst på skærmen, må du bruge en af de muligheder, der er givet i omtalte artikel.

Du kan kun rotere rigtig tekst i tekstbokse eller tabelceller 90 lodret. I dit tidligere spørgsmål skrev du, at det var udskriften du var interesseret i. Hvis det fortsat er tilfældet, kan du jo udnytte det:

1. Lav et dokument med vandret orientering.
2. Lav en tabel med en række og to celler, så der er en celle i hver halvdel af siden.
3. Indsæt tekst i cellen til venstre og vend teksten lodret den ene vej.
4. Indsæt tekst i cellen til højre og vend teksten lodret den anden vej.

Når du ser på udskriften af siden i lodret position, står teksten på den ene halvdel på hovedet.
Avatar billede dsj1972 Juniormester
16. marts 2009 - 23:01 #3
Hej falster,

mener du funktionen StrReverse, kunne bruges til at vende teksten eller til at vende hele tabelen??

mvh dsj
Avatar billede Lene Fredborg Ekspert
16. marts 2009 - 23:22 #4
Du har ikke brug for VBA. Marker teksten i en tabelcelle, vælg Formater > Tekstretning. Via dialogboksen kan du vende teksten lodret i begge retninger. Hvis du har Word 2007, finder du Tekstretning i gruppen Justering i den kontekstafhængige fane Layout.

Men hvis du gerne vil bruge VBA:

ActiveDocument.Tables(1).Cell(1, 1).Range.Orientation = wdTextOrientationUpward

vender teksten i den første celle i den første tabel i dokumentet. For at vende den anden vej, brug wdTextOrientationDownward
Avatar billede dsj1972 Juniormester
16. marts 2009 - 23:33 #5
Hej Lene,

Undskyld havde ikk set dit indlæg, af en eller anden årsag så var dit indlæg ikk kommet på før jeg skrev tilbage.

Jeg så godt dit svar i tidligere spm, og som sagt så var det ikke lige hvad jeg var på jagt efter. Nu prøvede jeg at oprette spm med mulighed for vba kode, da jeg syns at det gøre det muligt at sammen sætte nogle opgave til en automatisk funktion, eller det gør det ihvertfald lettere.

For at forklare kort om det jeg egentlig skal bruge dette her til:

Jeg har nogle emner som jeg gravere på en laser graverings maskine, denne graverings maskine gravere i linier fra venstre mod højre startende fra top mod bund.

Til at starte med havde jeg ikk nogen problemer fordi jeg lavede det på liggende papir og med en vandret tabel, men resultat var at gravermaskinen gravere alle emner på en gang, dvs at hvis der er en fejl af en eller anden grund så er alle emner tabt.

Derfor ville jeg gerne vende det om så tabel blev lodret således at gravermaskinen kun gravere et emne af gangen før man opdager en evt. fejl.

men når man så vender tabel lodret så starter testen fra venstre mod højre og lige på de emner vil det være på hoved....altså så skal tekst vendes på hoved.

Og et eller andet sted syns jeg at det virker klodset med wordArt eller klip og klister metoden, da jeg genererer skiftende serienumre for hver "udprint" gravering.

Jeg har opdaget at WordPerfekt fra officePerfekt X4 har denne mulighed med at vende teksten 180 grader, og undre mig derfor totalt at MS Word ikk har denne mulighed....og forstår ikk helt hvad der egentlig er grunden til at de ikk har denne mulighed med istedet for kun +/- 90 grader.

Tak for i aften jeg er tilbage imorgen.

mvh dsj
Avatar billede Lene Fredborg Ekspert
16. marts 2009 - 23:59 #6
Jeg er ikke sikker på, jeg har helt styr på din graveringsteknik :-)

Mht. strReverse (som falster nævnte): den funktion bytter tegnene i en String til omvendt orden:

StrReverse("test") giver resultatet "tset"

Det er jo noget andet end at vende teksten på hovedet...

Hvis Word kunne alt, var der ikke brug for andre programmer ;-)
Word er et tekstbehandlingsprogram. I almindelighed giver det ikke stor mening at læse tekst, der står på hovedet, mens man godt kan læse tekst, der står lodret. Måske det er noget af forklaringen på, at 180 graders rotation af alm. tekst ikke er en mulighed.
Avatar billede dsj1972 Juniormester
17. marts 2009 - 07:17 #7
Hej Lene,

som svar på dit sidste indlæg.

Ja jeg kunne godt se at StrReverse var noget med at skrive omvendt række følge.- Og det er ikk hvad jeg har brug for.

Du har da egentlig ret i at Word egentlig "kun" er et tekst behandlings program og at det ikke umiddelbart giver mening at kunne vende teksten på hoved.....Og dog kan man alligevel komme på adskilige eksempler på situationer hvor det forekommer logisk at en tekst på hoved funktion (180 grader rotation) var til stede. Og desuden så er programmerne i sådan en grad spækket med muligheder som mange ikk andede var til stede, men alligevel så har det ikk holdt MS tilbage.

Meeen når det så er sagt så vil jeg da gerne sige at Word2003 (set i bakspejlet) ikke er egnet til lige mit projekt, eller dvs at det virker helt fint, men desværre på nær den 180 grader funktion.

Jeg prøver lige lidt senere idag og smide hele min kode her så kan i selv se hvad det egentlig er jeg bakser med
Avatar billede dsj1972 Juniormester
18. marts 2009 - 10:00 #8
Hej igen,

Ja det nåede desværre ikk blive igår jeg fik tid til at smide koden op.

Den kommer her:

Først har jeg en kode på en knap på værktøjslinie som opretter en tabel som en skabelon for mine emner. Koden er ikk helt færdig da der mangler nogle små finesser.

Sub indsæt_tabel()

   

        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
        1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed

   

        With ActiveDocument.PageSetup
            VM = InputBox("indtast størrelse på venste margen", , VM)
            .LeftMargin = MillimetersToPoints(VM)
            .RightMargin = MillimetersToPoints(0)
            TM = InputBox("indtast størrelse på Top margen", , TM)
            .TopMargin = MillimetersToPoints(TM)
            .BottomMargin = MillimetersToPoints(0)
        End With

       
       
    With Selection.Tables(1)
            BC = InputBox("indtast bredde på kolonne", , BC)
            If BC = " " Then
            ' Afbryder handling
            Else
            .Columns.PreferredWidth = MillimetersToPoints(BC)
            End If
                RH = InputBox("indtast højde på række", , RH)
                If RH = " " Then
                ' Afbryder handling
                Else
                    Selection.Tables(1).Select
                    Selection.Rows.HeightRule = wdRowHeightExactly
                    Selection.Rows.Height = MillimetersToPoints(RH)
                    Selection.Borders.Enable = False
                End If
                        NR = InputBox("indstast antal rækker", , NR)
                        NR = NR - 1
                        If NR = " " Then
                        ' Afbryder handling
                        Else
                          Selection.Tables(1).Select
                          Selection.InsertRows NumRows:=NR
                        End If
               

        If .Style <> "Tabel - Gitter" Then
            .Style = "Tabel - Gitter"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
   
   
   
End Sub

Så har jeg en anden kode til min serie Nr generering, også knyttet til en knap på værktøjslinie. Denne kode er jeg dog ved at udbygge til at kunne håndtere flere forskellige nummereringer alt efter valg. Men her er en kode til en type.

Sub SerieNr()
               
                Open "\\X\Gravering\SerieNr_XXXX.txt" For Input As #1
                    Line Input #1, a$
                Close #1
                Pcs = InputBox("Indsæt antal til gravering", , Pcs)
                    If Pcs = "" Then
                    ' afbryder handling
                    Else
                Ser = Val(a$)
                Ser = Ser + Pcs
                Open "\\X\Gravering\SerieNr_XXXX.txt" For Output As #1
                    Print #1, Str(Ser)
                Close #1
                End If
               
               
               
              Open "\\X\Gravering\Dato_XXXX.txt" For Input As #2
                    Line Input #2, a$
                Close #2
                Dat = Val(a$)
                Dat = InputBox("Indsæt graverings dato", , Dat)
                    If Dat = "" Then
                    ' afbryder handling hvis der klikkes på cancel
                    Else
                Open "\\X\Gravering\Dato_XXXX.txt" For Output As #2
                    Print #2, Str(Dat)
                Close #2
                End If
               
                On Error Resume Next
                   
                    num = Ser
            For Each aCell In ActiveDocument.Tables(1).Columns(1).Cells
                aCell.Range.Text = Format(Str(Dat), "000000") & "  " & Format(Str(num), "000")
                num = num + 1
            Next aCell
   
End Sub

Håber at det giver en lidt bedre forståelse for hvad jeg har gang i.
Desuden kan jeg lige nævne at selv om der er tale om en laser graver maskine så virker den faktisk presis som en alm laser printer, bortset fra at den har kraftig laser stråle og kan skære i tre og mange andre ting, og så arbejder dens laser hoved ligesom en plotter og det er netop det som er mit problem....og derfor at jeg gerne vil have vendt problematiken på min word skabelon/kode. Jeg har tænkt lidt på om man egentlig kan få en tekst boks rundt omkring hele tabel og derefter rotere tekstboksen med tabellen rundt.

mvh dsj
Avatar billede Lene Fredborg Ekspert
18. marts 2009 - 10:35 #9
Du kan ikke rotere en tekstboks. Uanset hvad du gør, kan du ikke få almindelig tekst til at stå på hovedet...
Avatar billede dsj1972 Juniormester
18. marts 2009 - 10:43 #10
Hmm, øv.....

havde måske nok tænkt på at man måske havde kunne "gruppere" hele tabellen med tekst og det hele til et objekt eller lign. og så derved rotere lige som man kan med billede.


Jeg kommer nok til at bide i det sure æble og indse at det bare ikke lader sig gøre og at jeg så har tabt en del tid på noget som ikk kan bruges i sidste ende.

Desværre er det så uheldigt at der ikk er vildt mange som er eksperter i WordPerfekt.

Jeg er igang med at eksperimentere med WP lige nu på en trial udgave af OfficePerfekt X4 fra Corel, men kan ikk rigtig få lov til at udfører VBA koder på selv om det skulle være en fuld brugbar version selvom det er en trial.

Men WordPerfekt har lige precis den funktion med at rotere tekst endda hele 270 grader rundt.

dsj
Avatar billede falster Ekspert
20. marts 2009 - 19:00 #11
Jeg misfordtod det med "at vende tekst".

Her er et par tips - men næppe helt det du søger

http://word.mvps.org/FAQs/DrwGrphcs/UpsideDownText.htm

http://www.gmayor.com/rotate_text.htm
Avatar billede dsj1972 Juniormester
03. september 2009 - 12:36 #12
Hejsa,

Jeg havde helt glemt dette indlæg.

Jeg måtte jo indse at det simpelthen ikk kunne lade sig gøre at vende tekst på hoved. så jeg løste selv mit problem ved at lave en ny lære som så kunne stå på den anden led i laser printer.

og derved kunne jeg så bruge min kode til noget fornuftigt dog med enkelte rettelser.

Så håber ikk nogen har noget imod det men napper selv disse point :o)

dsj
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