VB Basic Word - Dokumententeil als *.txt speichern

Ich suche dringend eine Lösung für folgendes Problem:

In meinem Job sende ich an verschiedene Personen Word-Fragebögen. Diese sind mit der Formular-Funktion so gestaltet, daß als Antworten nur exakt definierte Felder befüllt werden dürfen. Alle Antworten habe ich dann auf einer Auswertungsseite unter dem Fragebogen noch einmal mit der Funktion „REF=Name_des_Feldes“ gespiegelt. Hierbei habe ich jeweils einen Tabstop zwischen die Antworten gesetzt.

Wenn ich nun einen Fragebogen bekomme, dann kann ich das Dokument entsperren, die Auswertungsseite kopieren und mit „Inhalte einfügen“ in eine Excel-Tabelle einfügen. Diese speichere ich dann als *.txt-Datei mit Tabstops zwischen den Daten. Diese txt-Datei kann ich dann in eine sehr spezielle Datenbank einlesen, die für einen komplexen Import immer die gleiche Struktur der Importdatei benötigt.

Allerdings frage ich mich, ob der Umweg über Excel wirklich notwendig ist. Irgendwie muss man mit VB doch programmieren können, dass eben die Daten der Auswertungsseite als txt-Datei so gespeichert werden, dass man diese Datei anschließend gleich importieren kann.

Wichtig ist für mich aber, dass wie gesagt nur diese Daten gespeichert werden und die Tabstops hier erhalten bleiben…

Kennt irgendjemand eine Lösung in VB für das Problem?

Bitte nicht als Lösung anbieten den Fragebogen in Excel zu gestalten. Klar könnte man dann immer direkt als *.txt speichern, aber leider haben die Leute, die den Fragebogen ausfüllen sollen meist nur Word. Excel oder andere Exoten wie StarOffice kommen daher leider nicht in Frage.

Danke schon einmal für alle sinnvollen Ideen…

Grüße aus München

Stefaktiv

Hallo,

warum kopierst Du die gespiegelten Werte nicht direkt in eine Textdatei? Wenn Tabs eingefügt sind, werden diese doch mit übertragen und die Textdatei hat auch ohne den Zwischenschritt über Excel das benötigte Format.
Willst Du mehrere Dateien auf einmal auslesen oder jede einzeln?
Ggf. könnte man was programmieren, was die Sache automatisiert.
gruß tester.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ich arbeite oft noch in den Fragebögen, verändere also Einzelheiten etc. - da wäre es mir recht, wenn ich nicht immer sperren - entsperren müßte, sondern einfach mit Knopfdruck eine passende *.txt-Datei erstellen kann. Das Problem beim sperren / entsperren ist vor allem, daß die eingegebenen Daten dann zurückgesetzt werden.

Die Lösung mit Excel funktioniert auch - es ist eben immer umständlich raus und reinzukopieren. Gerade wenn ich das Kollegen erkläre ist es immer ein Extraschritt mehr. Viel einfacher wäre hier zu sagen: „drück aufs Knöpfchen und schon hast du die fertige Import-Datei im Verzeichnis liegen“.

Der Import in unsere Datenbank erfolgt dann Fragebogen für Fragebogen. Ich bekomm die Teile nämlich nach und nach zugesandt. Außerdem werden die Daten anschließend relativ komplex miteinander verknüpft, so dass man besser nicht allzu viel auf einmal importiert.

Grüße

Stefaktiv

Hallo,

warum kopierst Du die gespiegelten Werte nicht direkt in eine
Textdatei? Wenn Tabs eingefügt sind, werden diese doch mit
übertragen und die Textdatei hat auch ohne den Zwischenschritt
über Excel das benötigte Format.
Willst Du mehrere Dateien auf einmal auslesen oder jede
einzeln?
Ggf. könnte man was programmieren, was die Sache
automatisiert.
gruß tester.

Hallo,

entschuldigung, aber die Problemstellung war bei mir in Vergessenheit geraten.
Habe nun ein Makro geschrieben, welches Werte aus Fomularfeldern in Word in eine Textdatei überträgt.

Benenne dazu in Deiner Vorlage die Formularfelder mit einem konkreten Namen. (Eingabe im Eigenschaftsmenü unter Textmarke).
Füge über die Symbolleiste „Steuerelement-Toolbox“ eine Befehlsschaltfläche ein und belege diese mit folgendem Code:

Private Sub CommandButton1\_Click() 
Const ExportDatei As String = "C:\test\Export.txt" 'Name der Exportdatei
Dim FeldName As Variant
Dim zähler As Integer
Dim Exportzeile As String
Dim fs As Object
Dim txtdat As Object
FeldName = Array("Feld1", "Feld2", "Feld3", "Feld4") 'Namen der Formularfelder in der richtigen Exportreihenfolge
For zähler = 0 To UBound(FeldName)
 Exportzeile = Exportzeile & Switch(Exportzeile "", Chr(9)) & ActiveDocument.FormFields(FeldName(zähler)).Result
Next zähler
'Exportdatei erzeugen und Datenzeile einfügen
Set fs = CreateObject("Scripting.FileSystemObject")
Set txtdat = fs.createTextFile(ExportDatei, True)
txtdat.Write Exportzeile
txtdat.Close
MsgBox "Exportdatei wurde erzeugt!" & Chr(13) & \_
 "gespeichert unter: " & ExportDatei
End Sub

Passe die u.g. Codezeilen noch entsprechend an.
"Const Exportdatei … " - Name der gewünschten Ausgabedatei ggf. ersetzen
„FeldName = Array(…“ - konkrete Namen der Formularfelder in der Reihenfolge, wie die Inhalte in der Exportdatei erscheinen müssen (durch Komma getrennt und in Anführungszeichen)

Zu beachten: Das Makro überschreibt evtl. Eintragungen in bereits vorhandener Exportdatei.

Die Spiegelung der Werte kannst Du Dir nun übrigens sparen. Der Dokumentschutz braucht auch nicht aufgehoben zu werden.

Falls das Programm in das Du die Daten einlesen willst, nach dem Datensatz einen Zeilenumbruch (RETURN) benötigt, musst du die Zeile „txt.write Exportzeile“ ersetzen durch „txt.writeline Exportzeile“

Hoffe es funktioniert alles.

Viele Grüße tester!

Hi,

erst mal supervielen Dank für deine Hilfe & Bereitschaft. Ich hab den Code jetzt in mein Word-Dokument eingefügt wie du es beschrieben hast. Funktioniert auch ganz gut, allerdings lässt sich der Button nach einfügen des Skripts aus unerfindlichen Gründen nicht mehr anklicken bzw. wenn man es tut passiert rein gar nichts. Keine Fehlermeldung, keine Reaktion.

Ich kann dir den Fragebogen zuschicken wenn du mir ein email an stefaktiv (at) hotmail.com schickst. Vielleicht kann man leichter den Fehler finden, wenn man das Formular selbst vor Augen hat.

Lg

Stefaktiv

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

wahrscheinlich befindest Du Dich noch im Entwurfsmodus.
Dieser ist bei Einfügen von Steuerelementen automatisch aktiviert. Man kann dann Steuerelemente neu erstellen oder bearbeiten. Ein Klick auf das Steuerelement markiert es lediglich und die verbundene Aktion (Makro) wird nicht ausgeführt.
Um die Schaltfläche normal nutzen zu können, blende die Symbolleiste „Steuerelement-Toolbox“ ein und deaktiviere das Symbol „Entwurfsmodus“ (Bleistift, Dreieck und Lineal), dann wird bei Klick auf die eingefügte Schaltfläche das Makro gestartet.

Stell auch sicher, dass die Ausführung von Makros nicht unter Menü „Extras->Makro->Sicherheit“ gesperrt ist.

Falls es nicht klappt, kannst Du gerne trotzdem eine Mail schicken. Wenn Du den Login in w-w-w-Forum durchgeführt hast, benutze neben dem Artikel den Link „E-Mail an den Autor schreiben“. Dort ist meine Mailadresse hinterlegt.

Viele Grüße und gutes Gelingen, tester!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]