Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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

Word Prozedur killen per VBA

Word Prozedur killen per VBA
18.09.2015 14:15:28
schmeli
Hallo Zusammen,
ich habe mich jetzt schon das Internet hoch und runter gegoogled aber ich finde keine wirkliche Lösung. Hoffentlich könnt ihr mir helfen.
Also folgendes Problem:
Ich habe ein VBA Code erstellt, der mir Excel Daten ins Word via Bookmarks einfügt.
Jetzt ist es allerdings so, dass der ein oder andere Benutzer im Excel einfach Zeilen löscht und dann erscheint natürlich der Debugger Modus und meckert, dass er seine Textmarke nicht findet. Problem kann repariert werden, ABER im Hintergrund läuft ein WORRD Prozess. Diesen krieg ich nur über den Task Manager gekillt.
Wenn ich es nicht machen, spinnt Word rum.
Hat mir vielleicht jemand einen Code der im Falle eines Fehlers den Word Prozess auch wieder beendet?
Vielen lieben Dank!
Schmeli

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Prozedur killen per VBA
18.09.2015 14:41:10
EtoPHG
Hallo Schmeli,
Wir sollen dir also eine Lösung für einen unbekannten Code geben, der einen Fehler nicht abfängt?
Wie stellst du dir das vor?
Gruess Hansueli

AW: Word Prozedur killen per VBA
18.09.2015 14:56:27
Nepumuk
Hallo,
so?
Public Sub Kill_Word()
    Dim objWMI As Object, objProcessList As Object, objProcess As Object
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
        ".\root\cimv2")
    Set objProcessList = objWMI.ExecQuery("Select * from Win32_Process " & _
        "Where Name = 'winword.exe'")
    For Each objProcess In objProcessList
        Call objProcess.Terminate(0)
    Next
    Set objProcessList = Nothing
    Set objWMI = Nothing
End Sub

Gruß
Nepumuk

Anzeige
hoffentlich hat er nicht mehrere offen ;-) (owT)
18.09.2015 14:59:41
EtoPHG

AW: hoffentlich hat er nicht mehrere offen ;-) (owT)
18.09.2015 15:21:43
schmeli
Hallo Zusammen,
das ging ja fix. Wahnsinn.
Nach dem mein Code ca. 180 Textmarken verwendet, wollte ich euch das eigentlich ersparen. Aber es scheint, dass es doch hilfreich sein kann, wenn ihr wisst was ich vorhabe. Hier mal die kurz Fassung mit nur einem Bookmark.

Dim appWord As Object
Dim doc As Object
Dim doctemp As Object
Dim wks As Worksheet
Dim strFilename     As String
Dim rngRange        As Range
Set appWord = CreateObject("Word.Application")
Set doctemp = appWord.Documents.Add(ThisWorkbook.Path & "\Templates\OC_Template.doc")
Set doc = appWord.Documents.Open(ThisWorkbook.Path & "\Templates\OC_Template.doc")
appWord.Visible = False
'*** Import data from Excel ***
Set wks = ActiveWorkbook.Worksheets("OC")
With doc
'Simple bookmarks - with out checking in the worksheet
.Bookmarks("Date").Range.Text = wks.Range("X2").Value
'*** Change name of the file ***
Set rngRange = Worksheets("OC").Range("L13")
strFilename = rngRange.Value & "_OC"
'*** Save the new file with the new name ****
With doc
.SaveAs2 ThisWorkbook.Path & "\" & strFilename & ".doc"
appWord.Documents.Open (ThisWorkbook.Path & "\" & strFilename & ".doc")
End With
'*** Close template without changes ***
With doctemp
doctemp.Close Savechanges:=False
End With
'*** Clean *****
Set appWord = Nothing
Set doc = Nothing
End Sub
Angenommen mein User hat jetzt die Zeile X2 gelöscht, dann meckert VBA mit dem Debuggen Modus.
Ich hatte hier an so eine einfache Lösung gedacht wie, IF Error then Word.quit oder so etwas.
Mein Code sieht vor, dass die WORD nach dem Ausführen geöffnet bleibt für die Bearbeitung durch den User.
DANKE!
LG

Anzeige
AW: hoffentlich hat er nicht mehrere offen ;-) (owT)
18.09.2015 18:05:13
EtoPHG
Hallo schmeli,
Kopier doch einfach nur, wenn die Zelle nicht leer ist!
Set wks = ActiveWorkbook.Worksheets("OC")
If Len(wks.Range("X2")) > 0 then
'...kopieren
End if
'*** Save the new file with the new name ****
Gruess Hansueli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige