css angaben in Visual Basic Makro für word

Homepages, CMS, Templates, Web Based Programming, Webhosting, Gameserver

Moderatoren: coolmann, chillmensch

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

css angaben in Visual Basic Makro für word

Beitragvon darkeye » 18.09.2011, 19:12

Hallo an alle,

ich habe hier ein Stück VB Makro
welche mir word in wikiformat überführt.

ich möchte gerne css angaben dort rein haben, so das diese automatisch mitkonvertiert werden
hier die stelle:
Das zwischen <b> </b> hätte ich gerne funktionsfähig, das funktioniert aber nicht, wegen den ". in php kann man das durch die nutzung von ' ausgleichen-ich hab aber noch nichts passendes für VB gefunden. ;-)

Code: Alles auswählen

For Each tTable In ActiveDocument.Tables
           
            'Memorize table text
            ReDim x(1 To tTable.Rows.Count, 1 To tTable.Columns.Count)
            i = 0
            For Each tRow In tTable.Rows
                i = i + 1
                j = 0
                For Each tCell In tRow.Cells
                    j = j + 1
                    strText = tCell.Range.Text
                    x(i, j) = Left(strText, Len(strText) - 2)
                Next tCell
            Next tRow
           
            'Delete table and position after table
            Set myRange = tTable.Range
            myRange.Collapse Direction:=wdCollapseEnd
            tTable.Delete
           
            'Rewrite table with memorized text
            myRange.InsertParagraphAfter
            myRange.InsertAfter ("{| [b]class="wikitable sortable zebra"
|- class="hintergrundfarbe5"[/b]")
            myRange.InsertParagraphAfter
            For k = 1 To i
                For l = 1 To j
                    myRange.InsertAfter " || " + x(k, l)
                Next l
                myRange.InsertParagraphAfter
                myRange.InsertAfter "|- [b]align="right"
| align="left"[/b]"
                myRange.InsertParagraphAfter
            Next k
            myRange.InsertAfter ("|}")
            myRange.InsertParagraphAfter
           
    Next tTable
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: css angaben in Visual Basic Makro für word

Beitragvon schmidtsmikey » 20.09.2011, 11:04

Kenne mich in VB nicht aus, aber solche Dinge erledigt man in der Regel mit Regular Expressions, die Du sicherlich auch in VB verwenden kannst:

Hier ein nützlicher Link dazu: http://www.regenechsen.de/phpwcms/index.php?regex

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: css angaben in Visual Basic Makro für word

Beitragvon darkeye » 21.09.2011, 06:52

Ich habe jetzt eine erste Lösung gefunden:
http://www.vbarchiv.net/faq/faq_strings_quote.html

Das ganze sieht bisher so aus:

Code: Alles auswählen

    For Each tTable In ActiveDocument.Tables
           
            'Memorize table text
            ReDim x(1 To tTable.Rows.Count, 1 To tTable.Columns.Count)
            i = 0
            For Each tRow In tTable.Rows
                i = i + 1
                j = 0
                For Each tCell In tRow.Cells
                    j = j + 1
                    strText = tCell.Range.Text
                    x(i, j) = Left(strText, Len(strText) - 2)
                Next tCell
            Next tRow
           
            'Delete table and position after table
            Set myRange = tTable.Range
            myRange.Collapse Direction:=wdCollapseEnd
            tTable.Delete
           
            'Rewrite table with memorized text
            myRange.InsertParagraphAfter
            myRange.InsertAfter ("{| class=" & """wikitable sortable zebra""")
            myRange.InsertAfter ("|- class=" & """hintergrundfarbe5""")
            myRange.InsertParagraphAfter
            For k = 1 To i
                For l = 1 To j
                    myRange.InsertAfter " || " + x(k, l)
                Next l
                myRange.InsertParagraphAfter
                myRange.InsertAfter "|- align=" & """right"""
                myRange.InsertAfter "| align=" & """left"""
                myRange.InsertParagraphAfter
            Next k
            myRange.InsertAfter ("|}")
            myRange.InsertParagraphAfter
           
    Next tTable
Bild

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: css angaben in Visual Basic Makro für word

Beitragvon darkeye » 22.09.2011, 09:24

Ich bin jetzt komplett fertig, also wer mal ein mediawiki erstellen will und sich das lästige per hand eintragen in eine Tabelle usw. ersparen will ;-) (es sind sortierbare Tabellen im wikipedia layout mit Gitter (alle Tabellenränder))

Code: Alles auswählen

For Each tTable In ActiveDocument.Tables
           
            'Memorize table text
            ReDim x(1 To tTable.Rows.Count, 1 To tTable.Columns.Count)
            i = 0
            For Each tRow In tTable.Rows
                i = i + 1
                j = 0
                For Each tCell In tRow.Cells
                    j = j + 1
                    strText = tCell.Range.Text
                    x(i, j) = Left(strText, Len(strText) - 2)
                Next tCell
            Next tRow
           
            'Delete table and position after table
            Set myRange = tTable.Range
            myRange.Collapse Direction:=wdCollapseEnd
            tTable.Delete
           
            'Rewrite table with memorized text
            myRange.InsertParagraphAfter
            myRange.InsertAfter ("{| class=" & """wikitable sortable zebra""" & vbCrLf & "|- class=" & """hintergrundfarbe5""")
            myRange.InsertParagraphAfter
            For k = 1 To i
               
                For l = 1 To j
                    If k = 1 Then
                        If l = 1 Then
                            myRange.InsertAfter "!" & x(k, l) & "<br />"
                            Else: myRange.InsertAfter "!!" & x(k, l) & "<br />"
                        End If
                    End If
                   
                    If k > 1 Then
                    myRange.InsertAfter "||" & x(k, l)
                    End If
                   
                Next l
                myRange.InsertAfter (vbCrLf & "|- align=" & """right""")
                myRange.InsertParagraphAfter
            Next k
            myRange.InsertAfter ("|}")
            myRange.InsertParagraphAfter
           
    Next tTable


End Sub


LG
Bild


Zurück zu „Webseiten, Webprogrammierung & Domains“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste