VisualBasic Auslesen von HTMLCONTROL Forms.HTML:Text.1

Unwissend23

Cadet 1st Year
Registriert
Aug. 2012
Beiträge
8
Hallo,
versuche wahrscheinlich das Rad neu erfinden und hoffe hier auf Hilfe, da ich in VBA ein Frischling bin.

Habe eine Seite aus dem Internet nach Word kopiert.
Nun will ich mit einem Makro die Seite auslesen, wobei mir die Felder Name und Vorname zur späteren Speicherung ( save as) dienen sollen.

Die einzelnen Boxen habe ich zwar in einem Bookmark gespeichert, jedoch gibt dieses Bookmark immer die komplette Box zurück.
Zur Speicherung benötige ich jedoch einen String. Die entsprechende Umwandlung in einen String, also den Inhalt der Box, will jedoch nicht gelingen.

Wer hat da eine Idee?
 

Anhänge

Habe mal einen Teilcode angehangen.
1. Problem ist, dass das Dokument, dass in mehrere Bereiche aufgeteilt ist, die jeweils immer die gleichen Begriffe, wie "Name" und Vorname" beinhalten, daher das holprige finden des anzusprechenden Elements via Tastatur. Dann wird in die HTML-Box gesprungen und diese einem Bookmark zugewiesen. Die Box kann nicht direkt angesprungen werden, da viele Boxen die gleiche Bezeichnung tragen, (Ansicht Feldfunktionen macht dies deutlich) daher der umständliche Weg.
Als Kleingrafik habe ich mal drangehangen, was als Feldinhalt ausgewiesen wird. Dies kann ich nun wirklich nicht brauchen. Zur Weiterverarbeitung ist der Inhalt der HTML-Box wichtig, der als String umgewandelt werden muss.

Wie gesagt, bin auf dem Gebiet Anfänger und brauche dringend ein paar Krücken, die dann auch für mich verständlich sind.
 

Anhänge

tut mir leid, aber ich werde keine unbekannten doc dateien hier öffnen, bitte paste deinen code direkt hier rein oder auf pastebin...
 
So, das konnte ich als Antwort einfügen. Wollte auch das Dokument mit den Feldfunktionen einfügen, was jedoch nicht gelingt. Gleiches gilt für den kleinen Bildschirmausdruck, den ich in die 2. doc-Datei reinkopiert hatte.
So kann ich nur sagen, dass im Dokument z.B. hinter Vorname in geschweifter Klammer
HTMLCONTROL Forms.HTML:Text.1 steht. Gleiches gilt für Name etc.


Sub DL2()
'
' DL2 Makro
' Makro aufgezeichnet am 06.08.2012 von v172762
' Bookmark "Anfang" am Anfang des Dok. gesetzt, damit Box "Ende Dokument erreicht" abgefangen wird.


Selection.GoTo What:=wdGoToBookmark, Name:="Anfang"

Selection.Find.ClearFormatting
'Suchen nach "VNAnrede (einmalig im Dok. vorhandenens Wort)
With Selection.Find
.Text = "VNAnrede"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Find.ClearFormatting
With Selection.Find
.Text = "VNAnrede"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
'Da im gesamten Dok. der Text Name oder Vorname mehrfach existiert, aber im Bereich VNAnrede nur einmal, erst Bereich anspringen
'mittels Tastatursteuerung, Cursor hinter Vorname platzieren und in HTML-Box springen, dort Kopieren
'und dem Bookmark VNVorname zuweisen.


Selection.HomeKey Unit:=wdLine
Selection.MoveDown Unit:=wdLine, Count:=3
Selection.MoveRight Unit:=wdWord, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Copy
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="VNVorname"
.DefaultSorting = wdSortByName
.ShowHidden = False

Selection.GoTo What:=wdGoToBookmark, Name:="VNVorname"
Selection.Find.ClearFormatting
With Selection.Find
.Text = " "
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Copy

'Zuweisen des Bookmark VNVorname der Variablen "strTempB" als String zur späteren Verarbeitung als Dateiname
'hier späterer Code zur Speicherung
'strDocName = strDocName & " " & strTempC & strTemp & " " & strTempA & ", " & strTempB & ".doc"
'ActiveDocument.SaveAs FileName:=strDocName, _
FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False
'Selection.HomeKey Unit:=wdStory

Hier kommt es zu der Fehlermeldung, Inhalt von strTempB wird mit einem Quadrat beim überfahren der Variablen mit dem Cursor wiedergegeben.
Dim strTempB As String
strTempB = Selection.Text
strTempB = Left(strTempB, Len(strTempB) - 2)
Selection.PasteAndFormat (wdSingleCellText)

End With
Selection.HomeKey Unit:=wdStory
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Anfang"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With

End Sub
 
Zuletzt bearbeitet: (Farbmarkierungen eingegeben)
So ganz steig ich noch nicht durch, aber um an den Inhalt einer Cell zu kommen nutze folgendes:

Range("A1").Value

Du musst halt die Addresse wissen dafür...
 
Nachname
Vorname
Straße und Hausnummer
PLZ
Ort


Nachname { HTMLCONTROL Forms.HTML:Text.1 }
Vorname { HTMLCONTROL Forms.HTML:Text.1 }

Ich versuche es nochmal darzustellen, da Du keine Doc-Datei öffnest, was sicherlich zur Verdeutlichung hilfreich gewesen wäre.

nachdem ich das Formular aus dem Internet über kopieren/einfügen nach Word gebracht habe, erscheint in der Normalansicht Nachname und dahinter eine Box, die mit dem Nachnamen gefüllt ist. Die Box kann hier nicht nachgestellt werden. Die Füllung lässt sich auch markieren (auch überschreiben, was allerdings nicht erfolgen soll). Über kopieren/einfügen wird aber nicht der Inhalt der Box, sondern die komplette Box mit Inhalt dann neu eingefügt, was zur weiteren Bearbeitung nicht genutzt werden kann. Im Prinzip möchte ich nur den Inhalt der Box einer Variablen zuweisen.
Über Feldfunktionen erscheint dann (nachgestellt) z.B. Nachname { HTMLCONTROL Forms.HTML:Text.1 }

In meinem Makro bin ich, nach hier unwichtigen Suchroutinen, u.a. zur Pos. Nachname gesprungen, mittel Tastaturaufzeichnung danach in die Box, Text markiert und einem Bookmark zugewiesen. Wie schon gesagt, wenn ich das Bookmark an anderer Stelle auslese, erscheint dann die komplette Box mit Inhalt.

Mir geht es ausschließlich um das Auslesen des Inhalts dieser Box mit Zuweisung zu einer Variablen als String.
Eine Direktabfrage vom Server ist nicht möglich.

Trotzdem schon einmal jetzt vielen Dank, dass Du Dich mit meinem Problem auseinander setzt. Vielleicht fällt Dir so noch eine Lösung ein.

Für einen Versuchscode wäre ich dankbar und bitte denk daran, dass ich Frischling bin.
Danke
 
Zuletzt bearbeitet: (Nachsatz)
Habe da noch etwas gefunden, vielleicht bietet dies einen anderen Ansatz.
Im VB Explorerfenster kann ich unter ThisDocument - Eigenschaften die einzelnen Boxen finden, die neben Value den Inhalt der Box anzeigt. Wenn ich diesen Inhalt kopiere und in das Dokument einfüge, erhalte ich das gewünschte Ergebnis (Darstellung des Inhalts ohne Box)
Wie kann ich nun in einem Makro (hier z.B. DefaultOxcName18) anspringen oder direkt einer Varablen zuweisen. Über die normale Suchfunktion komme ich da nicht dran.
Wenn ich in dem Eigenschaftsfenster z.B. DefaultOxcName19 auswähle, springt der Cursor auch direkt in das entsprechende Feld. Umgekehr geht dies auch, ich klicke im Dokuent die Box an und das entsprechende Eigenschaftsfeld öffnet sich.
Word muss also beim öffenen des Dokumentes die entsprechenden Boxen ausgelesen haben und diese Info muss doch irgendwo liegen und abgreifbar sein.
 

Anhänge

  • Explorerfenster VB mit Worddokument.jpg
    Explorerfenster VB mit Worddokument.jpg
    66,9 KB · Aufrufe: 111
Zurück
Oben