Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Teil-String auslesen

Betrifft: Teil-String auslesen von: Peter
Geschrieben am: 22.09.2020 09:42:20

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

Betrifft: AW: Teil-String auslesen
von: Beverly
Geschrieben am: 22.09.2020 10:31:30

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, "„", ""), "“", "")

GrußformelBeverly's Excel - Inn

Betrifft: AW: Teil-String auslesen Top!
von: Peter
Geschrieben am: 23.09.2020 07:36:30

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

Betrifft: AW: Teil-String auslesen Top!
von: Beverly
Geschrieben am: 23.09.2020 07:49:27

Hi Peter,

die MsgBox dient auch nur zum Test um zu zeigen, was der Code genau ausliest... ;-)


GrußformelBeverly's Excel - Inn

Beiträge aus dem Excel-Forum zum Thema "Teil-String auslesen"