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.
Ich bin für jede Hilfe dankbar
Liebe Grüße
Micha