AW: Textboxinhalt von Excel nach Word exportieren
01.08.2013 11:41:22
Excel
Hallo Daniel,
hier eine Beispieldatei
https://www.herber.de/bbs/user/86667.xlsm
Nachfolgende der Code des eigentlichen Transfer-Makros, das mit den entsprechenden Parametern von beliebiger Stelle aufgerufen werden kann.
Wenn die Zieldatei an der Einfügeposition schon die gewünschten Absatz- und Zeichenformate hat, dann der Formatierungs-Teil weggelassen werden.
Gruß
Franz
Option Explicit
'# Windows Vista - Excel/Word 2010 - VBA 7.0.1627 #
'# fcs 2013-08-01 #
'# Modul: Allgemeines Modul #
'# Übertragung von Texten in eine Worddatei #
'# Makros sollten auch unter Excel 2003 lauffähig sein #
'Für die Funktion der Makros muss im Excel-VBA-Editor unter Extras-->Verweise der _
Verweis gesetzt werden auf die
'Microsoft Word X.Y Object Library
'Möchte man ohne den Verweis auf die Objekt-Bibliothek arbeiten, dann müssen alle _
Variablen, die als Word.xxxxx Deklariert sind, als Object deklariert werden.
Sub UF_Daniel_anzeigen()
UserForm1.Show
End Sub
Private Sub aaTest()
'Test-Makro, um den Text in das Worddokument zu übertragen
Call Text_mach_Word(strText:="Mein Test-Text Zeile 1" & vbLf & "Zeile 2" & vbCrLf & "Zeile 3", _
_
strWordFile:="", _
bolReadonly:=False)
End Sub
Public Sub Text_mach_Word(strText As String, _
Optional strWordFile As String, _
Optional bolReadonly As Boolean = False)
'Exportiert den Text (strText) in das angegebene Word-Dokument
'Ist die strWordFile nicht angegeben, dann export in eine leere Standardvorlage
'Ist strWordFile eine dot- dotx- oder dotm-Vorlagedatei wird eine neue Datei estellt
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange As Word.Range
' Dim wdApp As Object
' Dim wdDoc As Object
' Dim wdRange As Object
Set wdApp = VBA.CreateObject("Word.Application")
wdApp.Visible = True
If strWordFile = "" Then
Set wdDoc = wdApp.Documents.Add(DocumentType:=0) '0 = wdNewBlankDocument
Else
If InStr(1, LCase(Right(strWordFile, 4)), "dot") > 0 Then
'Dokumentvorlage verwenden
Set wdDoc = wdApp.Documents.Add(Template:=strWordFile)
Else
Set wdDoc = wdApp.Documents.Open(Filename:=strWordFile, ReadOnly:=bolReadonly)
End If
End If
Set wdRange = wdDoc.Range(0, 0) 'Einfüge-Position setzen
wdRange.Text = strText
Call prcFormatieren(wdObject:=wdRange)
wdApp.Activate
Set wdApp = Nothing
Set wdDoc = Nothing
Set wdRange = Nothing
End Sub
Public Sub prcFormatieren(wdObject As Word.Range)
'Public Sub prcFormatieren(wdObject As Object)
'Formtieren des eingefügten Textes
With wdObject.ParagraphFormat
'Mindestzeilenhöhe in Punkten
.LineSpacingRule = 3 '3 = wdLineSpaceAtLeast
.LineSpacing = 18
'Zeilenabstände vorher/nachher
.SpaceBefore = 0
.SpaceAfter = 0
'Blocksatz formatieren
.Alignment = 3 '3 = wdAlignParagraphJustify
End With
With wdObject.Font
.Size = 12
.Name = "TimesNewRoman"
End With
End Sub