Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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


Anzeige
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... ;-)


;
Anzeige
Anzeige

Infobox / Tutorial

Teil-String auslesen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Teil-String aus einer Zelle in Excel VBA auszulesen, kannst Du die folgenden Schritte befolgen:

  1. Makro öffnen: Öffne Deinen VBA-Editor in Excel (ALT + F11).

  2. Neues Modul erstellen: Klicke auf "Einfügen" und wähle "Modul".

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub TeilStringAuslesen()
       Dim varText As String
       varText = "LINK Excel.SheetMacroEnabled.12 ""C:\\Users\\Peter\\Desktop\\Förderverein_ab2020\\Förderverein_ab2020.xlsm"" Worddaten!Z17S1 \a \t  \* MERGEFORMAT"
    
       ' Teilstring auslesen
       varText = Mid(varText, InStr(varText, ".12 ") + 4)
       varText = Left(varText, InStr(varText, " Worddaten!"))
    
       ' Anführungszeichen hinzufügen
       varText = Application.Trim(varText)
       varText = """" & varText & """"
    
       ' Ergebnis in Zelle ausgeben
       ThisWorkbook.Worksheets("Worddaten").Range("B44").Value = varText
    End Sub
  4. Makro ausführen: Führe das Makro mit F5 aus. Der Teil-String, der zwischen ".12 " und "Worddaten" liegt, wird in die Zelle B44 geschrieben.


Häufige Fehler und Lösungen

  • Fehler: „Typenübereinstimmung“

    • Lösung: Stelle sicher, dass die Variable varText als String deklariert ist.
  • Fehler: „Objekt nicht gefunden“

    • Lösung: Überprüfe, ob der Arbeitsblattname „Worddaten“ korrekt ist und existiert.
  • Problem mit Anführungszeichen:

    • Lösung: Achte darauf, dass die richtigen Anführungszeichen verwendet werden. Nutze """ für Anführungszeichen in VBA.

Alternative Methoden

Falls Du keinen VBA-Code verwenden möchtest, kannst Du auch die Excel-Funktionen TEXT oder TEIL nutzen, um Teilstrings auszulesen. Diese Methode ist jedoch nicht so flexibel wie VBA, insbesondere bei variablen Textlängen.

=TEIL(A1; FINDEN(".12 "; A1) + 4; FINDEN(" Worddaten!"; A1) - FINDEN(".12 "; A1) - 4)

Diese Formel geht davon aus, dass der gesamte Text in Zelle A1 steht.


Praktische Beispiele

  1. Beispiel mit VBA:

    Angenommen, Du hast einen Text in einer Zelle, der wie folgt aussieht:

    "LINK Excel.SheetMacroEnabled.12 "C:\\Users\\Peter\\Desktop\\Datei.xlsm" Worddaten!Z17S1"

    Um den Teil-String auszulesen, kannst Du das oben angegebene VBA-Skript verwenden.

  2. Beispiel mit Excel-Funktion:

    Wenn der Text in Zelle A1 steht, benutze die Funktion:

    =TEIL(A1; FINDEN(".12 "; A1) + 4; FINDEN(" Worddaten!"; A1) - FINDEN(".12 "; A1) - 4)

Tipps für Profis

  • Nutze die InStr-Funktion, um die Position von Text innerhalb eines Strings zu finden. Dies ist hilfreich, um dynamisch mit variablen Daten umzugehen.
  • Wenn Du häufig mit solchen Teilstrings arbeitest, erstelle eine Funktion, die Du wiederverwenden kannst.
  • Überlege, ob Du mit RegEx in VBA arbeiten möchtest, um noch komplexere Muster zu finden.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Strings verwenden?
Ja, Du kannst den Code anpassen, um andere Teilstrings auszulesen, indem Du die Suchbegriffe in der Mid- und Left-Funktion änderst.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen (z.B. Excel 2010 und später).

3. Wie kann ich sicherstellen, dass der Teil-String immer korrekt ist?
Testen und validieren Deine Eingabewerte regelmäßig und verwende Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Ergebnisse zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige