Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

143 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige