Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Image | |
---|---|
![]() |
Image-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 30.01.2010 19:28:44
Hi Helfer,
im Windows-Explorer kann ja festgelegt werden, mit welchem Programm ein bestimmter Dateityp geöffnet wird (nur als Beispiel: jpg-Dateien mit Corel-Photopaint). Gibt es eine Möglichkeit, dieses mit dem betreffenden Dateityp "verknüpfte" Programm mit Excel auszulesen und zu ermitteln, in welchem Ordner es sich befindet? Wenn ja - wie sähe der Code dafür aus?
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 30.01.2010 19:58:18
Hallo Karin,
meinst du so?
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 30.01.2010 20:25:30
Hi Nepumuk,
vielen Dank schon mal für deine Antwort. Aber wahrscheinlich habe ich mich nicht ganz eindeutig ausgedrückt. Es ist so, dass mir nur der Dateiname bekannt ist (ich erhalte ihn aus einer anderen Prozedur), also z.B. "Bild.jpg" und somit der Dateityp ".jpg". Nun möchte ich wissen, mit welchem Programm - wie über den Windows-Explorer festgelegt - dieser Dateityp geöffnet wird und in welchem Ordner das öffnende Programm liegt. Ich hoffe, jetzt ist mein Anliegen besser verständlich.
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 30.01.2010 20:55:11
Hallo Karin,
das kannst du nur aus der Registry auslesen. Ist da der Zugriff gewährt?
Gruß
Nepumuk
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 30.01.2010 21:53:13
Hi Nepumuk,
das dachte ich mir fast, dass man das nur aus der Registry auslesen kann :(((. Naja, wenn es keine andere Möglichkeit gibt... Dann muss ich eben darauf vertrauen, dass der Zugriff auf die Registry erlaubt ist.
Wie würde der Code dann aussehen?
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 31.01.2010 01:07:19
Hallo Karin,
teste mal:
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 10:01:35
Hallo Nepumuk,
ich habe es (XL2000,WinXP) so wie es da steht getestet.
Angezeigt wird:
C:\Programme\Gemeinsame Dateien\Microsoft Shared\PhotoEd\PHOTOED.EXE
aber öffne ich eine jpg-Datei im WindowsExplorer so wird sie mit Irfanview geöffnet.
C:\Programme\IrfanView\i_view32.exe
Gruß
Reinhard
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 31.01.2010 10:18:40
Hallo Reinhard,
und was wird angezeigt, wenn du das mit der Prozedur aus meiner ersten Antwort testest?
Gruß
Nepumuk
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 10:30:27
Hallo Nepumuk,
da wird korrekt der Pfad zu Irfanview angezeigt.
(Xl2000,WinXP)
Sorry, hatte deinen ersten Code nicht getestet, sonst hätte ich mir ja meinen Beitrag von eben an Karin gespart :-)
Gruß
Reinhard
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 10:29:26
Hi Nepumuk,
vom Prinzip her ist das schon so etwas was ich suche und mit vielen Dateitypen funktioniert der _
Code auch. Aber bei Bilddateien läuft er auf den Fehler "Index außerhalb des gültigen Bereichs" in der Zeile
Search_Linked_Program = Split(Left$(strKey, lngKeyLength - 1), Chr$(34))(1)Wenn ich mir strKey anzeigen lasse, wird folgendes ausgegeben (Dateityp ist mit Windows-FaxAnzeige verknüpft):
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 10:48:15
Hallo Karin,
unter Ordneroptionen, egal jetzt im Explorer oder in der Systemsteuerung, ist wohl das Gleiche habe ich jpg mit Irfanview verknüpft.
Beim Test vom Code von Nepumuk wurde aber der Pfad zum PhotoEditor angezeigt.
Nach dieser Photoed.exe habe ich in der Registry gesucht. Gefunden u.a. den Schlüssel (Standard) unter dem Reg-Pfad:
Arbeitsplatz\HKEY_Root_Classes\jpegfile\shell\open\command
Nur als Info, Ahnung was das genau bedeutet habe ich nicht :-))
Gruß
Reinhard
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 10:54:24
sorry, habe die Frage als offen zu kennzeichnen vergessen.
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 31.01.2010 11:14:06
Hi ihr zwei,
Ok, ich hab da an der falschen Stelle gesucht. Das sind natürlich benutzerdefinierte Einstellungen und darum unter "current User" gespeichert. Versuchen wir es mal so:
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 11:20:47
Hallo Nepumuk,
Public Sub Test() MsgBox Search_Linked_Program(".jpg") End SubDa kommt leider bei mir:
Betrifft: AW: verknüpftes Programm auslesen
von: Nepumuk
Geschrieben am: 31.01.2010 11:29:36
Hallo Reinhard,
Registry ist eine heikle Sache, die ist von Version zu Version ein bisschen unterschiedlich. Bei mir unter Vista funktioniert das nämlich. Wenn das auf allen Rechnern funktionieren soll, dann brauche ich noch 5 Computer mit den unterschiedlichen Betriebssystemen.
Ich frag mich langsam auch, wozu man/frau die Verknüpfung zu einer nicht existierenden Datei benötigt???
Gruß
Nepumuk
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 11:40:46
Hi Nepumuk,
bei mir kommt der Hinweis bei jedem Dateiyp - ich verwende Win XP, habe Admin-Rechte. Also lassen wir das mit der Registry.
Deine Frage ist ganz einfach zu beantworten: es gibt bekanntlich in ein Tabellenblatt eingebettete Dateien, die man folglich nicht auf der Festplatte suchen kann.
Betrifft: AW: verknüpftes Programm auslesen
von: Anton
Geschrieben am: 31.01.2010 11:53:38
Hallo @all,
vllt so?:
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 12:00:59
Hi Anton,
das ist vom Prinzip her ein ähnlicher Code wie der, den Nepumuk als erstes gepostet hatte und auch wie der Code von Reinhard - da die Datei jedoch nicht auf der Festplatte liegt fehlt der Pfad, der hierbei erforderlich ist.
Betrifft: AW: verknüpftes Programm auslesen
von: Anton
Geschrieben am: 31.01.2010 12:08:49
Hallo Karin,
ist vom Prinzip her ein ähnlicher Code
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 13:35:35
Hi Anton,
sorry, dass ich deinen Code nicht getestet hatte - er scheint die Lösung sein. Auf jeden Fall funktioniert das Ganze schon mal und scheint auch logisch zu sein - da die Datei (für die ich das verknüpfte Programm suche) nicht auf dem Rechner vorhanden ist, wird ein "Fake" vom selben Dateityp erstellt und dafür die Programmverknüpfung ermittelt: ich würde sagen - genial. Vielen Dank.
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 10:27:08
Hallo Karin.
ich fand VB-Code auf der Seite:
http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0165.shtml
und habe den umgebastelt. Leider muß man auch den Ordner angeben.
Aber das ist ja prinzipiell nur mehr Aufwand mal kurz auf der gesamten Festplatte nach der ersten Datei suchen die die gesuchte Endung hat, dann hat man ja einen Dateinamen und einen Pfad.
Und diesmal wurde bei mir korrekt Irfanview als verknüpftes Programm erkannt.
Option Explicit Private Declare Function FindExecutable Lib "shell32.dll" Alias _ "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory _ As String, ByVal lpResult As String) As Long Sub tt() Dim Datei, Pfad, exe As String, result exe = Space(254) & Chr(0) Datei = "cpu.jpg" Pfad = "C:\test" result = FindExecutable(Datei, Pfad, exe) MsgBox Left(exe, InStr(exe, Chr(0))) End Sub
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 10:49:26
Hi Reinhard,
danke für deine Bemühungen. Es ist nur so, dass ich den Pfad nicht kenne, im dem die Datei gespeichert ist sondern nur den Dateinamen und somit den Dateityp. Ich müsste dann ja alle Festplatten durchsuchen, bis ich eine beliebige Datei dieses Dateityps gefunden habe. Das würde dann viel zu lange dauern.
Betrifft: AW: verknüpftes Programm auslesen
von: Reinhard
Geschrieben am: 31.01.2010 11:08:28
Hallo Karin,
okay, VBA wird, wenn es eine Lösung gibt Nepumuk diese schon finden, ich weniger :-))
Mal ein anderer Ansatz der dir vielleicht zu anderen Wegen verhilft.
Kennst du regmon.exe und filemon.exe? Die beobachten was wo in die Registry geschrieben wird bzw. alle Arten von Dateizugriffen.
Schau bitte mal hier, anscheinend hat MS rtwas Neues anstelle von ihnen:
http://www.heise.de/newsticker/meldung/Aus-fuer-die-Sysinternals-Tools-Regmon-und-Filemon-7473.html
Das neue kenne ich nicht. Ich kann dir nur dein Vorgehen bei den beiden "alten" beschreiben.
Gehe in Ordneroptionen und bereite alles vor daß du schnell einem bestimmten Dateityp ein anderes Programm zuweisen kannst.
Dann muß es sehr schnell gehen, z.B. regmon.exe starten, sofort das Programm dem Dateityp zuweisen, regmon stoppen.
Die Schnelligkeit hat seinen Grund einzig darin daß SEHR VIEL aufgezeichnet wird.
Nach dem Stopp haste Zeit und Ruhe um die Aufzeichnung auszuwerten.
Vielleicht erhälst du dadurch genaue Erkenntnisse wo Windows was abspeichert.
Beide Programme sind Freeware von MS.
Gruß
Reinhard
Betrifft: Sorry, Frage noch offen o.w.T.
von: Reinhard
Geschrieben am: 31.01.2010 11:09:29
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 13:14:15
Hi Reinhard,
ich kenne diese Programme nicht, habe aber schon davon gehört. Wenn ich das richtig verstehe zeichnen sie die Veränderungen der Registry auf - da die Registrierung der verknüpften Programme aber offensichtlich bei jedem Betriebssystem an einer anderen Stelle geschieht, bringt das leider nicht viel, da ich es ja nur mit meinem Betriebssystem testen kann.
Betrifft: AW: verknüpftes Programm auslesen
von: Josef Ehrensberger
Geschrieben am: 31.01.2010 13:26:52
Hallo Karin,
Betrifft: AW: verknüpftes Programm auslesen
von: Beverly
Geschrieben am: 31.01.2010 14:41:02
Hi Sepp,
für eine eingebettete Datei benötige ich das verknüpfte Programm, um es im weiteren Code dann ansprechen zu können - man soll das Programm aus Excel wieder schließen können. Mir fehlte dazu bisher noch die Möglichkeit, das Programm zu ermitteln, mit dem die Datei durch das System geöffnet wird. Meine bisherigen Versuche sind da immer fehlgeschlagen, aber Dank Anton dürfte dieses Problem jetzt gelöst sein.