Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teil-String auslesen

Teil-String auslesen
22.09.2020 09:42:20
Peter
Hallo,
ich habe ein Makro mit dem ich eine Worddatei aus Excel öffne und den ersten Code auslese.
In der Zelle B44 benötige ich den Wert zwischen bestimmten Werten.
Zuerst einmal das vorhandene Makro:

Sub erste_Wordvorlage_öffnen2()
Dim wb As Workbook
Dim wksWd As Worksheet
Dim WdApp As Object
Dim wdDok As Object
Dim Pfad As String
Dim varText As String       'benötigt für Auslesen von Code aus Worddokument
Set wb = ThisWorkbook
Set wksWd = wb.Worksheets("Worddaten")
Pfad = Worksheets("Worddaten").Range("B26") & Worksheets("Worddaten").Range("C2")
Debug.Print Pfad
Set WdApp = CreateObject("Word.Application")
WdApp.Visible = True
WdApp.Activate
Set wdDok = WdApp.Documents.Open(Pfad)   'öffnet die Vorlage
wdDok.ActiveWindow.View.ShowFieldCodes = True    'Word-VBA öffnen
'Anfang ersten Eintrag auswählen und auslesen
With wdDok
varText = .Fields(1).Code   'Code aus dem 1. Feld aus geöffnetem  _
Worddokument
'''                    varText = Mid(varText, InStr(1, varText, ":") - 1, InStr(1, varText, ". _
xlsm") + 6 - InStr(1, varText, ":")) 'Umwandlung nur Teil aus dem Code
'varText = Mid(varText, InStr(1, varText, ":") - 1, InStr(1, varText, ". _
xlsm") + 7 - InStr(1, varText, ":")) 'Umwandlung nur Teil aus dem Code
Debug.Print varText
End With
'Ende ersten Eintrag auswählen und auslesen
'wksWd.Range("B44") = """" & varText & """"   'hinzufügen von Anfü _
hrungszeichen vor und nach dem ausgelesenen Code
wksWd.Range("B44") = varText                    'ohne hinzufügen von Anfü _
hrungszeichen vor und nach dem ausgelesenen Code
'Debug.Print wksWd.Range("B44")
Set wdDok = Nothing
Set WdApp = Nothing
End Sub
Das Ergebnis von varText = .Fields(1).Code lautet:
LINK Excel.SheetMacroEnabled.12 „C:\\Users\\Peter\\Desktop\\Förderverein_ab2020\\Förderverein_ab2020.xlsm“ Worddaten!Z17S1 \a \t \* MERGEFORMAT
Als Ergebnis in B44 soll sein:
„C:\\Users\\Peter\\Desktop\\Förderverein_ab2020\\Förderverein_ab2020.xlsm“
Der Wert links ist immer gleich: "LINK Excel.SheetMacroEnabled.12 "
Die Anzahl der " kann variabell sein sowohl nach "...12 " als auch nach ".xlsm.
Ich benötige somit alle Werte zwischen "...12 " und dem Wort "Worddaten"
Könnt ihr mir bitte hierbei helfen.
Besten Dank
Gruss
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teil-String auslesen
22.09.2020 10:31:30
Beverly
Hi Peter,
vielleicht nach diesem Prinzip:
    varText = Mid(varText, InStr(varText, ".12 ") + 4)
varText = Left(varText, InStr(varText, " Worddaten!"))
MsgBox Application.Substitute(Application.Substitute(varText, "„", ""), "“", "")


AW: Teil-String auslesen Top!
23.09.2020 07:36:30
Peter
Guten Morgen Karin,
vielen Dank für Deine Hilfe. Es funktioniert einwandfrei.
Nur die MsgBox ist in der Form nicht für mich brauchbar.
Sinn und Zweck ist dass aus einer bestehenden Word-Vorlage der Code des ersten Eintrags ausgelesen wird.
Und genau diesen mit den vorhanden Anführungszeichen.
Es wird in diesem Makro geprüft, ob die Daten der vorhandenen Word-Vorlage mit den Daten der Excel-Datei identisch sind.
Hierzu werden die Daten einschliesslich der Anführungszeichen überprüft. Sind diese identisch - wird Prüfung beendet, wenn nicht identisch, werden alle Codes entsprechend geändert. Im Prinzip wie Suchen - Ersetzen.
Wichtig ist hierbei das entsprechende Anführungszeichen, da die Word-Vorlage ohne diese Anführungszeichen nicht funktioniert.
Nochmals vielen, vielen Dank für Deine Hilfe.
Wünsche eine gute Zeit. Falls noch irgendwas im Orginal-Programm nicht gehen sollte, werde ich mich nochmals bei Dir melden.
Gruss
Peter
Anzeige
AW: Teil-String auslesen Top!
23.09.2020 07:49:27
Beverly
Hi Peter,
die MsgBox dient auch nur zum Test um zu zeigen, was der Code genau ausliest... ;-)


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige