Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suche in Word mit Excel-Makro

Forumthread: Suche in Word mit Excel-Makro

Suche in Word mit Excel-Makro
siegfried.rump@daimlerchrysler.com
Hallo,
ich habe den unten stehenden Code hier aus dem Forum, der soweit auch funktioniert.
Allerdings möchte ich die Suche aus Excel heraus mehrmals starten.
Dabei wird mir jedesmal eine neue Word-Datei geöffnet obwohl die Datei noch offen ist.
Ich möchte also in der bereits geöffneten Datei suchen.
Danke
Sub KanalImDocSuchen(Suchtext)
If Suchtext = "" Then Exit Sub
Dim ObjWord As Object
Dim Version As Integer
Version = 11
On Error Resume Next
Set ObjWord = GetObject("Word.Application." & Version)
If ObjWord Is Nothing Then
Set ObjWord = CreateObject("Word.Application." & Version)
End If
DatName = ActiveWorkbook.Path & "\" & Replace(ActiveWorkbook.Name, "xls", "doc")
With ObjWord
On Error GoTo Errorhandler
.Documents.Open Filename:=DatName
With .Application.Selection
With .Find
.Text = Suchtext
End With
.Find.Execute
End With
.Visible = True
End With
Set ObjWord = Nothing
Exit Sub
Errorhandler:
MsgBox Error
Set ObjWord = Nothing
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Suche in Word mit Excel-Makro
02.12.2011 10:19:06
Harald
Hallo Siegfried,
z.B. so:
Option Explicit
Public ObjWord As Object
Public Version As Integer
Sub KanalImDocSuchen(Suchtext) ' nur beim ersten Mal aufrufen
If Suchtext = "" Then Exit Sub
Dim ObjWord As Object
Dim Version As Integer
Version = 11
On Error Resume Next
Set ObjWord = GetObject("Word.Application." & Version) 'nur beim ersten Mal Word Object  _
erstellen und File öffnen
If ObjWord Is Nothing Then
Set ObjWord = CreateObject("Word.Application." & Version)
End If
DatName = ActiveWorkbook.Path & "\" & Replace(ActiveWorkbook.Name, "xls", "doc")
With ObjWord
On Error GoTo Errorhandler
.Documents.Open Filename:=DatName
With .Application.Selection
With .Find
.Text = Suchtext
End With
.Find.Execute
End With
.Visible = True
End With
'     Set ObjWord = Nothing 'jetzt nicht, da ObjWord bei weiteren Suchen noch benötigt wird
Exit Sub
Errorhandler:
MsgBox Error
Set ObjWord = Nothing
End Sub

Sub KanalImDocSuchen_nochmal(Suchtext) ' nach dem ersten Mal aufrufen
If Suchtext = "" Then Exit Sub
On Error Resume Next
With ObjWord
With .Application.Selection
With .Find
.Text = Suchtext
End With
.Find.Execute
End With
.Visible = True
End With
'     Set ObjWord = Nothing 'jetzt nicht, da ObjWord bei weiteren Suchen noch benötigt wird
Exit Sub
Errorhandler:
MsgBox Error
Set ObjWord = Nothing
End Sub

Sub KanalImDocSuchen_close()
Set ObjWord = Nothing
End Sub
Man könnte das jetzt noch optimieren, da das Suchen in KanalImDocSuchen_nochmal genau gleich dem Suchen in der ersten Routine ist. Man könnte das also in eine eigene Subroutine auslagern.
Alternativ teilt man in drei Routinen:
1) Öffnen des doc files
2) suchen im offenen File
3) Schließen des offenen Files
Um die Verwaltung musst Du Dich selbst kümmern, also sicher stellen, dass Öffnen, Suchen und Schließen in der richtigen Reihenfolge stattfinden.
Gruß
Harald
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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