Best Practices > Diskussionen zu Best Practices
COM-Schnittstelle MS Word
ata:
@Remo,
--- Zitat ---Sonst folgendes:
-Mit Select und Selection arbeiten ist oft nicht so toll (sinnlose rumhüpferei, mit Range arbeiten ist besser)
-Textmarken in Kopf-/Fusszeile ausfüllen ist auch so Sache für sich (Stichwort: StoryRanges)
-Formfields ausfüllen kann auch gemein werden (mehr als bestimmte Anzahl Zeichen und CRLF), gibt aber Trick.
--- Ende Zitat ---
... das kann ich so bestätigen - ähnliches gilt ja auch bei EXCEL...
Deine Hilfe ist jederzeit willkommen - dein Trick würde mich interessieren... ;)
Toni
Axel:
--- Zitat von: Fedaykin am 30.01.08 - 23:31:55 ---Also meldet euch wenn an meiner Hilfe interessiert.
--- Ende Zitat ---
Aber selbstverständlich sind wir interessiert. Für Verbesserungsvorschläge und Hinweise auf Stolperfallen sind wir immer dankbar.
Hier ist jede Hilfe willkomen.
Vielen Dank im Voraus an alle die helfen.
--- Zitat von: Fedaykin am 30.01.08 - 23:31:55 ---
Sonst folgendes:
...
-Textmarken in Kopf-/Fusszeile ausfüllen ist auch so Sache für sich (Stichwort: StoryRanges)
-Formfields ausfüllen kann auch gemein werden (mehr als bestimmte Anzahl Zeichen und CRLF), gibt aber Trick.
--- Ende Zitat ---
Textmarken in Kopf-/Fusszeilen kann man doch garnicht nutzen. Mir ist es wenigsten bisher nicht gelungen.
An dem Trick für die FormFields wäre ich auch interessiert. Obwohl ich, bedingt bei Problemen beim Ausdruck, immer weniger Formularfelder in Word verwende.
Axel
Fedaykin:
Hi zusammen
Habe erst mal folgendes zum anschauen.
'Einfügen eines Textes an einer Textmarke
Sub InsertAtTM(strMarke As String, strText As String)
' Dim objWord As Application
' Set objWord = Application
Dim bmrange As Variant
With objWord.ActiveDocument
Set bmrange = .Bookmarks(strMarke).Range
bmrange.Text = strText
.Bookmarks.Add strMarke, bmrange
End With
End Sub
Sub InsertAutoTextAtBM(strMarke As String, strTextbaustein As String)
' Dim objWord As Application
' Set objWord = Application
Dim bmrange As Variant
With objWord.ActiveDocument
Set bmrange = .Bookmarks(strMarke).Range
Set bmrange = .AttachedTemplate.AutoTextEntries(CStr(strTextbaustein)).Insert(bmrange)
.Bookmarks.Add strMarke, bmrange
End With
End Sub
'Einfügen eines Textbausteins in Fußzeile
Sub InsertAutoTextInFooter(strText As String)
' Dim objWord As Application
' Set objWord = Application
Dim FooterRange As Variant
With objWord.ActiveDocument
Set FooterRange = objWord.Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range
.AttachedTemplate.AutoTextEntries(CStr(strText)).Insert FooterRange
If .PageSetup.DifferentFirstPageHeaderFooter = True Then
Set FooterRange = objWord.Selection.Sections(1).Footers(wdHeaderFooterFirstPage).Range
.AttachedTemplate.AutoTextEntries(CStr(strText)).Insert FooterRange
End If
If .PageSetup.OddAndEvenPagesHeaderFooter = True Then
Set FooterRange = objWord.Selection.Sections(1).Footers(wdHeaderFooterEvenPages).Range
.AttachedTemplate.AutoTextEntries(CStr(strText)).Insert FooterRange
End If
End With
End Sub
Schaut mal an und sagt was Ihr so dazu meint. Textmarken werden so nicht zerstört und auch nicht so rumhüpferei. Das mit Fusszeile ist wohl noch nicht so toll. Die Frage ist halt was man so am ehesten braucht. Nur die Ansichten wechseln und dann einfügen ist auch nicht toll. (Erste Seite anders und Ungerade Seiten anders und welcher Abschnitt).
Gruss
Remo
Fedaykin:
Und da euch das wohl das mit Feldern am meisten interessiert hier diese Routine.
'Einfügen von Texten, die als Parameter übergeben werden, in Formularfelder.
Sub InsertInField(strFeld As String, strText As String)
' Dim objWord As Application
' Set objWord = Application
Dim FormFeld As Variant
Dim IsProtected As Boolean
Dim Feld As Range
With objWord.ActiveDocument
On Error Resume Next
Set FormFeld = .FormFields(CStr(strFeld))
On Error GoTo 0
If Not IsEmpty(FormFeld) Then
Set Feld = FormFeld.Range
IsProtected = (.ProtectionType = wdAllowOnlyFormFields)
If IsProtected Then .Unprotect
Feld.Fields(1).Result.Text = strText
If IsProtected Then .Protect wdAllowOnlyFormFields, True
End If
End With
End Sub
PS: Wie ihr seht ist der Trick das Formularfeld als Feld zu betrachten. Dann klappen auch Zeilenumschaltungen und längerer Text. Leider muss dafür aber der Dokumentschutz aufgehoben werden.
Gruss
Remo
Fedaykin:
Hi zusammen
Wieder ich. ;D
Eigentlich könnte man auch den Unterschied zwischen Textmarke (Bookmark) und Formularfeld (FormField) ganz aufheben. Bei dem Add-In das wir haben ist uns das auf jeden Fall ziemlich Wurst was das eigentlich ist was wir ausfüllen wollen. Schick würde es wenn man das ganze Zeug auch noch mit einer Laufnummer versieht, da muss man aber erst mal Bookmarks (sollten Formularfelder ja auch immer haben) sammeln gehen.
Gruss
Remo
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln