MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.03.2019, 06:23   #1
lueneburger
Neuer Benutzer
Neuer Benutzer
Standard VBA - Text aus Word in Excel suchen

Guten morgen,

ich habe immer wieder das Problem, dass ich eine Word Datei habe und prüfen muss, ob Teile davon in eier Excel Zelle stehen. Dieses würde ich gerne per vba prüfen lassen.

Beispiel:
In einer Worddatei stehen Materialnummern (im Text oder auch als Tabelle). Nun möchte ich prüfen, ob diese Materialnummer in einem Excel Dokument vorhanden ist. Wenn vorhanden alles gut, sonst Meldung.

Meine Idee wäre, dass ich die entsprechende Materialnummern in Word markiere und dann im Exceldokument eine Spalte durchsuche ob die Nummer dort vorhanden ist. Dann melden welche Nummern aus der Markierung nicht vorhanden sind.

Hat jemand andere Ideen wie man das lösen kann, bzw. einen Lösungsansatz für mich?
lueneburger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 09:10   #2
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hi Lüneburger,

natürlich könntest Du jeden einzelen Suchbegriff auch mit Excel-Methoden suchen lassen, aber vielleicht könnte auch ein anderer Ansatz helfen:

Hole alle Materialnummern in einem Rutsch aus der Excel-Datei und füge sie in eine indizierte Collection ein. Anschließend versuchst Du, Deine Suchnummern ebenfalls in die Collection einzufügen. Wenn Du einen (abfangbaren) Fehler bekommst, ist die Nummer bereits vorhanden, wenn nicht, fehlt sie und Du kannst entsprechend reagieren.

Wenn Du ggf. abgespeckte und anonymisierte Word- und Excel-Dateien hier hochlädst, könnte man damit eine Beispielanwendung bilden.

__________________


Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.03.2019, 09:51   #3
lueneburger
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Moin, danke für den Tipp.

Verstehen tue ich das leider nicht mit der indizierten Collection. :-(

Anbein habe ich mal zwei Dateien angehängt.

In der Excelliste sind die Nummern, in der Worddatei können die in Tabellen in unterschiedlichen Spalten stehen.

Ne weitere Hilfestellung wär echt toll.
Angehängte Dateien
Dateityp: xlsx Exceldatei.xlsx (8,7 KB, 4x aufgerufen)
Dateityp: docx Worddatei.docx (13,7 KB, 5x aufgerufen)
lueneburger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.03.2019, 10:33   #4
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Dieser Beispielcode (Standardmodul) trägt einmalig die Materialnummern der Exceltabelle in eine indizierte Collection ein. Da man keinen Index doppelt vergeben kann ergibt sich ohne spezielle Suchroutine, ob ein Eintrag bereits vorhanden ist oder nicht.

Aufruf: Nummer markieren, Alt+F8, Makro 'testeNummer' ausführen.
Code:

Option Explicit

Dim colMaterialNummer As New Collection

Public Sub testeNummer()
    If Selection.End - Selection.Start = 9 Then
        If NummerIstDa(Selection.Text) Then
            MsgBox "Materialnummer " & Selection.Text & " ist vorhanden.", vbInformation, "Materialnummer-Existenzprüfung"
        Else
            MsgBox "Die Materialnummer " & Selection.Text & " fehlt in Excel!", vbCritical, "Materialnummer-Existenzprüfung"
        End If
    Else
        MsgBox "Markieren Sie eine neun-stellige Materialnummer", vbExclamation, "Materialnummer-Existenzprüfung"
    End If
End Sub

' liefert True, wenn die Materialnummer in Excel eingetragen ist
Private Function NummerIstDa(sEintrag As String) As Boolean
    Dim colMatNr As New Collection
    If colMaterialNummer.Count < 2 Then fillCollection
    Set colMatNr = colMaterialNummer
    ' Es wird versucht, die übergebene Materialnummer in die indizierte
    ' Collection einzutragen. Ist die Nummer bereits vorhanden, kommt
    ' es zu einem abfangbaren Fehler.
    ' Gelingt dagegen die Eintragung, fehlt die Nummer noch.
    On Error GoTo NummerFehltErr
    colMatNr.Add sEintrag, sEintrag
    On Error GoTo 0
Exit Function

NummerFehltErr:
    NummerIstDa = True
    Resume Next
End Function

Private Sub fillCollection()
    Dim objXl As Object, objWB As Object, objWs As Object
    Dim sxlFile As String, sPS As String
    Dim lLastLine As Long, i As Long, lSpalte As Long
    Dim sInhalt As String
    
    Const xlUp As Long = -4162      ' Excel-Konstante nachbilden
    
    lSpalte = 2                     ' Spaltennummer festlegen
    sPS = Application.PathSeparator ' Backslashalternative wegen Forumsmacke
    
    sxlFile = ThisDocument.Path & sPS & "Exceldatei.xlsx"    ' Pfad und Dateiname ggf. anpassen

    If Dir(sxlFile) <> "" Then
        Set objXl = CreateObject("Excel.Application")
        Set objWB = objXl.Workbooks.Open(sxlFile)
        Set objWs = objWB.ActiveSheet
        With objWs
            lLastLine = .Cells(.Rows.Count, lSpalte).End(xlUp).Row
            For i = 2 To lLastLine
                sInhalt = .Cells(i, lSpalte)
                ' Eintragen der Zellinhalte in die Collection
                colMaterialNummer.Add sInhalt, sInhalt   ' mit Index
            Next i
        End With

    ' Schließen und aufräumen
        objWB.Close False
        objXl.Quit
        Set objWs = Nothing
        Set objWB = Nothing
        Set objXl = Nothing
    Else
        MsgBox sxlFile, vbCritical, "Fehler: Datei nicht gefunden!"
    End If
End Sub

__________________


Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.03.2019, 19:04   #5
lueneburger
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Sorry, erst heute wieder online.
Vielen Dank für das Script.
Werde es testen und Feedback geben.

Hoffe ich komme morgen dazu.

Grüße aus Lüneburg
lueneburger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.