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

vba excel löschen externer Programme

vba excel löschen externer Programme
20.11.2020 16:58:47
Michael
Bezug: Externes Programm mit VBA schließen | Herbers Excel-Forum
Const PROCESS_TERMINATE = &H1 und Public lTaskID As Long in Deklarationen schreiben:
= Fehler beim Kompilieren, erwartet Anweisungsende vor = .. oder nur in Pozedur gestattet, wird aber nirgends akzeptiert.
Extras Verweise Microsoft Shell Controls und Automation, ohne dem geht es noch weniger.
Ist mein erster Versuch mit Shell. Was mache ich falsch?
Danke für jede Hilfe für 89jährigen Neuling, der durch Studium von excel vba versucht, sein Gedächtnis zu trainieren und die Corona-Einsamkeit zu vertreiben.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba excel löschen externer Programme
20.11.2020 17:34:01
Tino
Hallo,
Public ... muss außerhalb einer Sub oder Function stehen.
In der Regel fast ganz oben im Modul.
Gruß Tino
AW: vba excel löschen externer Programme
20.11.2020 18:48:42
Michael
Hallo Tino,
zunächst herzlichen Dank für Deine rasche Antwort - auch wenn ich schon lange nicht mehr systemrelevant bin.
Ich bin exakt den ausführlichen Anleitungen von Sepp Josef Ehrensberger aus 2010 gefolgt und habe
Public lTaskID As Long
im einem allgemeinen Modul ganz oben unter Deklarationen eingefügt. Und sofort "Fehler beim Kompilieren erhalten. Werde es morgen gleich nochmals versuchen.
Gravierender entpuppt sich
Private Const PROCESS_TERMINATE = &H1
was ebenso "Fehler beim Kompilieren" auslöst, wobei mit eingangs erwähntem Verweis " = " blau unterlegt wird, ohne Verweis jedoch " &H1 "(ebenso wie alle anderen &H(2, 6 und 9) aus Sepps ausführlicher Anleitung, für die sich der Anfrager herzlich bedankt hat, da es ganz fantastisch funktionierte.
Daher die Frage: habe ich einen richtigen Verweis? Oder etwas anderes vergessen?
Danke herzlich!
Michael
Anzeige
AW: vba excel löschen externer Programme
20.11.2020 19:38:19
Tino
Hallo,
ist eigentlich eine normale Konstante die keinen Fehler verursachen sollte.
Kannst Du ein Beispiel hochladen wo dieser Fehler auftritt?
Gruß Tino
AW: vba excel löschen externer Programme
21.11.2020 16:56:30
Firmus
Hi Michael,
hier ein funktionierendes Beispiel:
Windows-Tasks auflisten
Windows-Task (via Namen) gezielt beenden
https://www.herber.de/bbs/user/141743.xlsm
Gruß,
Firmus
AW: vba excel löschen externer Programme
21.11.2020 18:14:15
Michael
Hallo Firmus,
besten Dank für das Beispiel, sieht gut aus. Ich werde es morgen Vormittag gleich verarbeiten. Inzwischen ganz herzlichen Dank, Rückmeldung morgen.
Michael
Anzeige
AW: vba excel löschen externer Programme
22.11.2020 12:51:30
Michael
Hallo Firmus,
bei mir dauert halt alles schon ein wenig länger, aber das Beispiel hat mir sehr geholfen, es ist in mein Projekt gut einzufügen.
Die benötigten Programme öffnet und schließt eine Schleife, darum verwende ich die Variable „mobjprocess.Name“.
Anbei der ergänzte Code inkl. Variablen Deklarationen.
Nicht funktioniert 'Cells(a, 2).Value = objprocess.Path.Relpath‘, aber das benötige ich auch nicht.
Euch allen herzlichsten Dank – ich hab wieder einiges gelernt!
Sub Prozesse_auflisten()
Dim objWindowsService As Object
Dim colProcessList As Object
Dim objprocess As Object
Dim a As Integer
Dim mlonLetzteZeile As Long
'alte Liste köschen
mlonLetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
writeLog " & mlonLetzteZeile = " & mlonLetzteZeile
ActiveSheet.Range(Cells(1, 1), Cells(mlonLetzteZeile, 1)).Clear
'** Alle Prozesse ab Zelle A1 auflisten
'** Vorgaben definieren
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
'** Abfrage der aktiven Prozesse
Set colProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process")
'** Selektierte Prozessliste durchlaufen
For Each objprocess In colProcessList
a = a + 1                               'Zeilenzähler
Cells(a, 1).Value = objprocess.Name     'Ausgabe
'Cells(a, 2).Value = objprocess.Path         '.Relpath
Next objprocess
End Sub

Sub Windowsprozess_beenden()
Dim mobjWindowsService As Object
Dim mobjProcessList As Object
Dim mobjprocess As Object
Dim mstrProcessName As String
mstrProcessName = "notepad++.exe"
'** Definierten Prozess beenden
'** Vorgaben definieren
Set mobjWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
'** Abfrage der aktiven Prozesse
Set mobjProcessList = mobjWindowsService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = '" & mstrProcessName & "'")
'** Selektierte Prozessliste durchlaufen
For Each mobjprocess In mobjProcessList
writeLog mobjprocess.Name
mobjprocess.Terminate 'Prozess beenden
Next mobjprocess
End Sub
Beste Grüße
Michael
Anzeige
AW: vba excel löschen externer Programme
22.11.2020 12:56:12
Oberschlumpf
Hi,
deine Datei funktioniert bei mir gar nicht.
Ein Grund: keine der verwendeten Variablen ist deklariert.
Nachdem ich das nachholte, steigt der Code in dieser Zeile mit Abbruch aus:
Cells(a, 2).Value = objprocess.Path.Relpath
Ciao
Thorsten
AW: vba excel löschen externer Programme
22.11.2020 18:16:04
Firmus
Hi Thorsten,
klar - Option Explicit habe ich mir geschenkt, ebenso wie es im Original ist. Das hätte die fehlenden DIMs schon angemeckert.
(Verweis auf Link im Makro).
https://www.excel-inside.de/beispiele_vba/vba-l%C3%B6sungen-sonstiges/987-windows-prozesse-auslesen-und-beenden
"objprocess.Path.Relpath" hätte ich gerne gesehen, denn dort kann die Windows-TaskNr entnommen werden, aber dazu fehlte ein Objekt (google zeigte, dass es sich um ein Win-systemobjekt handelt).
Verweise auf ...WMI..... brachte nicht die Lösung.
Im Debug wird der Dateninhalt des Objekts angezeigt (z.B. bei For Each ... - STOP)
Da habe ich dann - für nur mal einen kleinen Test - nicht weiter gebohrt. Im Hinterkopf bleibt es.
Gruß
Firmus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige