Makro zum Einlesen von Autotext in Word 2007

14/05/2009 - 16:08 von Susanne | Report spam
hallo,
ich habe eine große Tabelle mit viel text für Autotext, kurzbez. des
Autotextes, Kategorie etc. in Word 2007.
Nun benötige ich ein Makro , welches dieses alles einlies.

das habe ich schon (kann leider kein vba)- dies liest nur den aktuell
markierten Text ein.
Sub AddBBProgramatically()
Dim oRng As Word.Range
Dim oTmp As Template
Set oRng = Selection.Range
Set oTmp = Templates("F:\Schnellbaustein.dotm")
oTmp.BuildingBlockEntries.Add _
Name:="NA1", _
Type:=wdTypeQuickParts, _
Category:="NeueKategorie", _
Range:=oRng
End Sub

dies ist meine Tabelle:
Kürzel Autotext Katalog Kategorie Optionen
1 viel text1 Autotext CD
2 noch mehr text2 Autotext CD
3 text3 Autotext CD
4 text4 Autotext CD
5 ganz vieltext5 Autotext CD

Kann mir da jemand helfen??

Schon mal großen Dank vorab

Susanne
 

Lesen sie die antworten

#1 Lorenz Hölscher
16/05/2009 - 13:19 | Warnen spam
Hallo Susanne,

Susanne schrieb:
das habe ich schon (kann leider kein vba)- dies liest nur den aktuell
markierten Text ein.



ich habe Dir das mal geschrieben (in ein Modul kopieren):

_________________________________
Sub LiesAutotexteEin()
Dim rngWoher As Range
Dim rngBB As Range
Dim tmpAutotexte As Template
Dim rowDiese As Row

'erste Tabelle ohne Titelzeile markieren
With Selection.Tables(1).Rows
Set rngWoher = .Item(2).Range
rngWoher.End = .Item(.Count).Range.End
End With
rngWoher.Select

'vorher muss die richtige Vorlage zugewiesen sein!
Set tmpAutotexte = ActiveDocument.AttachedTemplate

'prüfen, dass nicht versehentlich in Normal.dotm geschrieben wird!
If tmpAutotexte Is NormalTemplate Then
If MsgBox("Vorlage 'Normal.dotm' benutzen??", _
vbCritical + vbOKCancel + vbDefaultButton2) = vbCancel
Then
Exit Sub
End If
End If

'zeilenweise auslesen
For Each rowDiese In rngWoher.Rows
Set rngBB = rowDiese.Cells(2).Range
rngBB.MoveEnd wdCharacter, -1
tmpAutotexte.BuildingBlockEntries.Add ZellText(rowDiese, 1),
wdTypeAutoText, _
ZellText(rowDiese, 4), rngBB
Next
End Sub


Function ZellText(rowDiese As Row, intSpalte As Integer) As String
ZellText = rowDiese.Cells(intSpalte).Range.Text
ZellText = Left(ZellText, Len(ZellText) - 2)
End Function
________________________________________________

Wichtig ist, dass die Vorlage, in welche die AutoTexte importiert
werden sollen, bereits diesem Dokument zugewiesen ist (findest Du bei
Office-Menü/Word-Optionen/Add-Ins/Verwalten:"Vorlagen" Gehe zu/
Anfügen). Daher habe ich sicherheitshalber eingebaut, dass es nicht
versehentlich in die Normal.dotm schreibt. Das Makro liest nur die
erste Tabelle des Dokuments.

Du musst dann die Sub "LiesAutotexteEin" (Cursor rein und F5 drücken)
starten. Da nix gespeichert wird, kannst Du das einfach mal probieren.

Ich vermute mal, Deine echte Tabelle sieht etwas anders aus. Vor allem
die Optionen wirst Du so einfach nicht einlesen können, derzeit werden
sie ignoriert.

Viel Erfolg,
Lorenz

Weitere Tipps unter:
http://www.cls-software.de/cls_soft...07VBA.aspx

Ähnliche fragen