Textmarken mit UserForm auffüllen und aktualisieren

17/01/2010 - 18:26 von Andre Gobet | Report spam
Hallo zusammen

Eventuell ist meine Frage schon zig mal beantwortet worden jedoch bin
ich durch die Suche nicht so ganz schlau geworden. Eventuell kann mir
jemand hier helfen.

Ich habe eine UserForm mit sagen wir Adressfeldern, der User kann in
diese Felder eintragen und anschliessend durch einen Klick auf den
Knopf wird ein Dokument geöffnet und die bestehenden Textmarken mit
diesen Werten ergànzt. Das sieht bei mir so aus:

Me.Hide
ChangeFileOpenDirectory "C:\Schafer_Office_V3\"
Documents.Open FileName:="Dok2.doc", ConfirmConversions:=False,
ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="",
PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="",
WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:=""

ActiveDocument.Bookmarks("Text1").Range.Text = Me.TextBox1

So weit so gut das Makro startet die Textmarke wird mit dem Wert aus
der TextBox gefüllt. Nun aber meine Frage oder besser gesagt mein Ziel
ist dass der User die UserForm wiederum starten kann und in den
entsprechenden Textboxen die er vorher ausgefüllt hat immer noch seine
Werte oder Texte vorhanden sind und mit einem erneuten Klick auf den
Knopf "erstellen" die eventuell neuen Werte welche der User eingegeben
hat in das Dokument eingefügt werden.

Hoffe das ist nicht zu kompliziert.

Wir setzen bei uns Windows7 64Bit mit Office 2007 SP2 ein.

Gruss

- André
 

Lesen sie die antworten

#1 Thomas Gahler
17/01/2010 - 21:19 | Warnen spam
Guten Abend Andre


Eventuell ist meine Frage schon zig mal beantwortet worden [...]


Ich habe nicht nachgezàhlt :-)


Nun aber meine Frage oder besser gesagt mein Ziel
ist dass der User die UserForm wiederum starten kann und in den
entsprechenden Textboxen die er vorher ausgefüllt hat immer noch seine
Werte oder Texte vorhanden sind und mit einem erneuten Klick auf den
Knopf "erstellen" die eventuell neuen Werte welche der User eingegeben
hat in das Dokument eingefügt werden.


Deine Textmarke geht beim befüllen verloren. Also musst du diese nach dem
Übertragen des Textes von der UserForm auf das Dokument wieder herstellen
(siehe Beispiel).

Deine UserForm verliert die Werte nur dann , wenn diese entladen wird
(Unload UserForm1 oder Set frm = Nothing). Hast du diese nur mittels .Hide
verborgen, dann solltest du die Werte weiterhin sehen.
Aber unabhàngig davon würde ich die Werte erneut einlesen, du weisst ja
nicht was der Anwender im Dokument gewurstelt hat.


Sub Demo1()
Dim cText As String
Dim oRNG As Range
Dim oBM As Bookmark

cText = "ABC"

If ActiveDocument.Bookmarks.Exists("Test") Then
Set oRNG = ActiveDocument.Bookmarks("Test").Range

oRNG.Text = cText

Set oBM = ActiveDocument.Bookmarks.Add( _
Name:="Test", _
Range:=oRNG)
End If
End Sub




ChangeFileOpenDirectory "C:\Schafer_Office_V3\"
Documents.Open FileName:="Dok2.doc", ConfirmConversions:=False,
ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="",
PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="",
WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:=""


Zwei drei Gedanken zu deinem Code
- Weshalb denn das ChangeFileOpenDirectory? Ein
"FileName:="C:\Schafer_Office_V3\Dok2.doc" geht doch auch.
- Gewöhn dir an mit Objekten zu arbeiten, dann kannst du diese jederzeit
explizit ansprechen
dim doc as word.document
set doc = Documents.Open (Filename:=...)
- Weshlab übergibst du denn alle Argumente an die .Open-Methode obwohl diese
optional sind und als leere Wert über geben werden






Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP2), Office 2007 (SP2)

Ähnliche fragen