Word-VBA - Textbausteine in Word 2003

Hallo zusammen,

ich sitze schon seit längerem an einem Problem, dass ich per Word-Makros lösen soll. Eine kurze Einleitung, damit jeder weiß wovon ich rede:

Es geht um die allseits beliebten Textbausteine in Word 2003, sie sollen im Netzwerk verwendbar sein, weswegen die Autotextfunktion wegfällt.
Mein Plan war diese Textbausteine in „*.txt“ Dateien abzulegen und dann eine Zugriffsmöglichkeit über eine Userform in Word dafür zu schaffen. Einfach gesagt:

Öffne Datei xy, kopiere alles was du findest, füge es in das aktuelle Worddokument ein, schließe die Originaldatei des Textbausteins.

Mit dem Makro-Rekorder bin ich hier nur sehr bedingt weitergekommen. Vllt hat einer von euch eine zündende Idee wie ich hier am besten weiter vorgehe.

Das ist der Code den mir der Makrorekorder rausgeschmissen hat:

Sub Textbausteine ()

Documents.Open FileName:=„b.txt“, ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
„“, Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=1252
Selection.WholeStory
Selection.Copy
Windows(„Word-Makro“).Activate (-> Dokument in das der Textbaustein hinein soll.)
Selection.PasteAndFormat (wdPasteDefault)

End Sub

Ein anderes Makro welches ich im Netz gefunden habe und meinen Anforderungen schon relativ genau entspricht ist folgendes:

Sub TextImport2()

Dim dlgtext As FileDialog
Dim strText As String
Dim rng As Word.Range
Dim bmkBeginn As Word.Bookmark
Dim bmkEnde As Word.Bookmark

Dim fsize As Long
Dim fentry As Single

fsize = 11
fentry = 1

Set dlgtext = Application.FileDialog(msoFileDialogFilePicker)
dlgtext.Title = „Auswahl der Textdatei“
dlgtext.Filters.Add „Textdateien“, „*.txt“, 1
dlgtext.ButtonName = „Import“

With dlgtext
If .Show = -1 Then
strText = dlgtext.SelectedItems.Item(1)
’ frmText.Show

Set rng = Selection.Paragraphs(1).Range.Duplicate
rng.Collapse wdCollapseStart
rng.InsertParagraph
rng.Collapse wdCollapseEnd
Set bmkEnde = rng.Bookmarks.Add(Name:=„BMEnde“, Range:=rng)
rng.Collapse wdCollapseStart
rng.MoveEnd wdParagraph, -1
rng.Collapse wdCollapseStart
rng.InsertFile (strText)
rng.Collapse wdCollapseStart
Set bmkBeginn = rng.Bookmarks.Add(Name:=„BMBeginn“, Range:=rng)
Set rng = ActiveDocument.Range(Start:=bmkBeginn.Range.Start, End:=bmkEnde.Range.End)
With rng
.Font.Size = fsize
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.ParagraphFormat.LeftIndent = CentimetersToPoints(fentry)
.Bookmarks.Add Name:=„Einfuegetext“, Range:=rng
.Collapse wdCollapseEnd
End With
End If
End With

dlgtext.Filters.Clear
Set dlgtext = Nothing
Set rng = Nothing
Set bmkBeginn = Nothing
Set bmkEnde = Nothing

End Sub

Hier ist allerdings das Problem dass ich die Syntax nicht gut genug verstehe um das Makro für mich umzuschreiben.

Ich bräuchte hier Änderungen bei dem Auswahldialog; am Besten sollte die Möglichkeit bestehen direkt mehrere Sachen anzuwählen (zB. füge Textbaustein a, b, d, und f in das Dokument ein, c und e nicht.(optimalerweise direkt and der richtigen Stelle, aber das ist der nächste Schritt) und ich verstehe nicht warum der Text immer in der Schriftart Courir eingefügt wird. Ich kann zwar hinterher den gesamten Text nach Arial formatieren aber das ist ja nicht der Sinn der Sache. :wink:

Ich bin für jede Hilfe dankbar :smile:

Liebe Grüße
Micha

Hallo,

ich bin mir nicht ganz sicher, aber kann man die autotext-Bausteine nicht in der Normal.dot speichern? Die könntest Du dann im Netzwerk ablegen oder als GPO verteilen.

Als Makro kannst Du sowas natürlich auch machen.

Du kannst auf eine Textdatei mit dem Filesystemobject zugreifen oder einfach mit
open #1
Google mal nach den Stichworten Freefile und Open dann findest Du dutzende Beispiele.

Dein Beispiel, wie Du per Code Textbausteine anlegst kannst Du dir mit dem Makro-recorder selbst erzeugen. Einfach Makro-recorder starten, die Befehle ausführen, die per Quellcode erledigen möchtest und unter Makros-bearbeiten kannst Du dann den Quellcode ansehen und für Deine Bedürfnisse weiter verändern oder anpassen.

Das sind erstmal ein paar Tipps, wie Du weiter schauen kannst, sag bescheid, wenn Du an einer Ecke nicht weiter kommst.

Liebe Grüße

Cornelia

Hallo…

Hab noch ein wenig rumprobiert und habe inzwischen ein Makro gefunden welches auch soweit ganz gut funktioniert.

Sub TextEinfügen()
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(FileDialogType:=msoFileDialogOpen)

With dlgOpen
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add „Textdateien“, „*.doc“, 1
.Show
End With
If dlgOpen.SelectedItems.Count 1 Then
MsgBox („Kein Textbaustein ausgewählt“)
Exit Sub
End If

’ Makro aufgezeichnet
Selection.InsertFile FileName:=dlgOpen.SelectedItems(1), Range:="", ConfirmConversions:= _
False, Link:=False, Attachment:=False
End Sub

Allerdings sind mir hier noch ein, zwei Sachen unklar, vllt durchschaut das ja wer.

Ich würde gerne auch mehrere Dateien auswählen können, wennn ich allerdings .Allowmultiselect = True setze kann ich zwar mehrere Dateien im Filedialog markieren, es werden aber nicht mehrere Files importiert. Ich schätze mal das liegt an an der 1 hinter SelectedItems im unteren Teil des Makros. Nur was muss ich dort hinschreiben um mehrere Sachen importieren zu können?

Auch wenn ich die Passage:
If dlgOpen.SelectedItems.Count 1 Then
MsgBox („Kein Textbaustein ausgewählt“)
Exit Sub
End If
auskommentiere kann ich nicht mehrere Files gleichzeuitig importieren.

Viele Grüße und viele Grüße

Micha