Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Selection.Find funktioniert nicht

Betrifft: VBA Selection.Find funktioniert nicht von: Felix
Geschrieben am: 15.10.2014 16:18:24

Hallo Leute,

ich will derzeit eine Abfrage in Excel via VBA programmieren, mit der ich auf ein Word-Dokument zugreife, dort einen Namen suche und mir dann die Seitenzahlen, auf denen der Name steht, ausgeben lassen. Soweit so gut. Allerdings schaffe ich es nicht die selection.find methode zum Funktionieren zu bringen. Diesmal bekomme ich den Fehler "Objekt untertsützt diese Eigenschaft oder Methode nicht".

Hier mein Code:

Sub Zahlen_hinzufügen()
             
Dim intRowCnt As Integer
Dim AppWD As Object
Dim fn
Dim wdDoc As Object

'''''''''''''''''''''Öfnnen der Word -Datei''''''''''''''''''''
Const StartDrive = "C:"
Const StartDir = "\"
ChDrive StartDrive
ChDir StartDir
fn = Application.GetOpenFilename("Word-Dokumente, *.docx", , "Bitte Datei auswählen")
If fn = False Then Exit Sub 'Abbrechen gedrückt

Set AppWD = CreateObject("Word.Application") 'Word als Object starten

Set wdDoc = AppWD.Documents.Open( _
        Filename:=fn, _
        ConfirmConversions:=False, _
        ReadOnly:=False, _
        AddToRecentFiles:=False, _
        PasswordDocument:="", _
        PasswordTemplate:="", _
        Revert:=False, _
        WritePasswordDocument:="", _
        WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto, _
        Visible:=True)
 
 '''''''''''''''''''Name aus Excel-Zelle auslesen '''''''''''''''
 
intCol = 1 'Nummer der Spalte in Excel, die ausgelesen werden soll

For intRowCnt = 1 To Cells(Rows.Count, intCol).End(xlUp).Row ' Für jeden Namen in Exceltabelle
    PersonName = Cells(intRowCnt, intCol)

'''''''''''''''''''Suche im aktiven Word-Dokument nach PersonName '''''''''''''''
With wdDoc.Selection.Find
    .ClearFormatting
    .Text = PersonName
    .Execute Forward = True
End With
    
 '''''''''''''''''''Lese die Seitenzahl aus, auf der das Suchergebnis gefunden wurde und  _
schreibe sie in Excel '''''''''''''''
    Cells(intRowCnt, 2) = wdDoc.Selection.Information(wdActiveEndAdjustedPageNumber)

Next

AppWD.Documents(fn).Close SaveChanges:=False
AppWD.Quit
Set AppWD = Nothing

End Sub


Hat irgendjemand eine Idee, was das Problem ist und wie man es lösen könnte?

Vielen Dank im Voraus,

Felix

  

Betrifft: fehlt da nicht ein Doppelpunkt? von: Tino
Geschrieben am: 15.10.2014 17:17:55

Hallo,
müsste die Zeile nicht mit Doppelpunkt da stehen?

.Execute Forward:= True

Gruß Tino


  

Betrifft: AW: fehlt da nicht ein Doppelpunkt? von: Felix
Geschrieben am: 15.10.2014 17:28:26

Ja das wahrscheinlich auch ;-)
Der Hauptfehler war allerdings wie ich gerade per Zufall herausgefunden habe, dass man nicht das Dokument selbst (wdDoc), sondern das Programm direkt ansteuern muss (AppWD).

Sprich: AppWD.Selection.Find

Vielen Dank trotzdem für die Hilfe :-)

Felix


  

Betrifft: Nachfrage: Verweis auf Word ... vorhanden? von: Tino
Geschrieben am: 15.10.2014 17:40:29

Hallo,
ich sehe in Deinem Code die Konstanten
wdOpenFormatAuto oder wdActiveEndAdjustedPageNumber
die gibt es so im Excel nicht, also muss ein Verweis auf Word vorhanden sein.
Dann kannst Du die Deklarierung anstatt auf Objekt auch gleich so einstellen.

Dim AppWD As Word.Application

Dim wdDoc As Word.Document


Hat den Vorteil, dass die Intellisense beim Programmieren hilft.
Dann wäre dies wahrscheinlich auch aufgefallen.

Gruß Tino


  

Betrifft: AW: Nachfrage: Verweis auf Word ... vorhanden? von: Felix
Geschrieben am: 15.10.2014 17:47:48

Super Tipp!

Vielen Dank Tino!

Felix