kompletten Dateipfad von Netzlaufwerk an Outlook übergeben
Hallo all,
ich habe ein .vbs mit dem per Rechtsklick auf eine Datei (egal was für eine -.txt,.jpg etc.), der Pfad an Outlook übergeben wird. Vorraussetzung ist eine Datei auf einem Netzlaufwerk. Das funktioniert auch schon bis auf die letzte Ebene, nur der Dateiname inkl. extension fehlt noch.
Bin für jede Hilfe dankbar.
Hier mal das Script.
Option Explicit
Dim ol, mail
Dim strg, sKey
Dim WshShell, wsshell
Dim fso, path, path2, path3
'Regeintrag generieren
Set Wsshell = WScript.CreateObject("WScript.Shell")
Wsshell.RegWrite "HKCR\*\Shell\Pfad senden\command\", "wscript ""C:\temp\sendpath.vbs""%1", "REG_SZ"
'Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
path = fso.GetAbsolutePathName(".")
path2 = path
path = Left(path, 1)
path2 = Mid(path2,3)
'Wscript.Echo (path2) 'Ausgabe des ersten Zeichen
'Pfad aus der Registry
Set WshShell = CreateObject("WScript.Shell")
sKey = "HKEY_CURRENT_USER\NETWORK\" & path & "\RemotePath" 'UNC mit Explorer Letter wählen
strg = WshShell.RegRead(sKey) 'Ausgabe des Pfades der Registry
'wscript.echo strg
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.body = "Dateilink: " & strg & path2
mail.Display
Ich hab auch interesse an eleganteren Lösungen.
Gruß und Dank
dmo
ich habe ein .vbs mit dem per Rechtsklick auf eine Datei (egal was für eine -.txt,.jpg etc.), der Pfad an Outlook übergeben wird. Vorraussetzung ist eine Datei auf einem Netzlaufwerk. Das funktioniert auch schon bis auf die letzte Ebene, nur der Dateiname inkl. extension fehlt noch.
Bin für jede Hilfe dankbar.
Hier mal das Script.
Option Explicit
Dim ol, mail
Dim strg, sKey
Dim WshShell, wsshell
Dim fso, path, path2, path3
'Regeintrag generieren
Set Wsshell = WScript.CreateObject("WScript.Shell")
Wsshell.RegWrite "HKCR\*\Shell\Pfad senden\command\", "wscript ""C:\temp\sendpath.vbs""%1", "REG_SZ"
'Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
path = fso.GetAbsolutePathName(".")
path2 = path
path = Left(path, 1)
path2 = Mid(path2,3)
'Wscript.Echo (path2) 'Ausgabe des ersten Zeichen
'Pfad aus der Registry
Set WshShell = CreateObject("WScript.Shell")
sKey = "HKEY_CURRENT_USER\NETWORK\" & path & "\RemotePath" 'UNC mit Explorer Letter wählen
strg = WshShell.RegRead(sKey) 'Ausgabe des Pfades der Registry
'wscript.echo strg
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.body = "Dateilink: " & strg & path2
mail.Display
Ich hab auch interesse an eleganteren Lösungen.
Gruß und Dank
dmo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29303
Url: https://administrator.de/contentid/29303
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
25 Kommentare
Neuester Kommentar
Moin dmo,
so sollte es etwas besser gehen:
Anmerkungen dazu:
- Das Schreiben dieses Kontexteintrags hat nichts in diesem *.vbs-Schnipsel zu suchen. Das ist eine einmalige Aktion.
- Du hast bisher mit GetAbsolutePathname(.) den Pfad des gerade aktuellen Verzeichnisses ermittelt. Kann passen, muss aber nicht.
- Du kannst den Schnipsel testen vom CMD-Prompt aus mit
Hope That Helps
Biber
[Edit] Die unten erwähnten Tippfehler sind im Source korrigiert.[/Edit]
so sollte es etwas besser gehen:
'--snipp c:\temp\sendpath.vbs
Option Explicit
Dim ol, mail
Dim strg, sKey
Dim WshShell ', wsshell
Dim fso, path, DriveLetter
Dim Debug
Debug=False ' auf TRUE setzen für Meldungen
'---- Einmalig--nicht hier-- Dim wsshell
'---- Einmalig--nicht hier-- Regeintrag generieren
'---- Einmalig--nicht hier-- Set Wsshell = WScript.CreateObject("WScript.Shell")
'---- Einmalig--nicht hier-- Wsshell.RegWrite "HKCR\*\Shell\Pfad senden\command\", _
'---- Einmalig--nicht hier-- "wscript ""C:\temp\sendpath.vbs""%1", "REG_SZ"
'Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0))
path=fso.GetAbsolutePathName(wscript.arguments(0))
DriveLetter = Left(path, 1)
path = Mid(path,3)
if Debug then Wscript.Echo "DriveLetter " & DriveLetter 'Ausgabe des ersten Zeichen
'Pfad aus der Registry
Set WshShell = CreateObject("WScript.Shell")
On Error resume Next ' falls es kein Netzwerk-Drive ist...dann lassen wir ihn so.
sKey = "HKEY_CURRENT_USER\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen
strg = WshShell.RegRead(sKey) 'Ausgabe des Pfades der Registry
Set WshShell = Nothing
if (len(Strg) = 0) then
strg=DriveLetter & ":"
else
if Debug then wscript.echo "Strg aus REG: [" & strg &"]"
End if
if Debug then wscript.echo "Strg + path: [" & strg & path & "]"
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.body = "Dateilink: " & strg & path
mail.Display
'--snapp c:\temp\sendpath.vbs
Anmerkungen dazu:
- Das Schreiben dieses Kontexteintrags hat nichts in diesem *.vbs-Schnipsel zu suchen. Das ist eine einmalige Aktion.
- Du hast bisher mit GetAbsolutePathname(.) den Pfad des gerade aktuellen Verzeichnisses ermittelt. Kann passen, muss aber nicht.
- Du kannst den Schnipsel testen vom CMD-Prompt aus mit
cscript //nologo c:\temp\sendpath.vbs c:\temp\sendpath.vbs
-oder-
cscript //nologo c:\temp\sendpath.vbs Y:\Share\MeineDateiAufmNetzlaufwerk.xyz
Biber
[Edit] Die unten erwähnten Tippfehler sind im Source korrigiert.[/Edit]
Sorry, dmo,
ich hatte noch zwei Tippfehler drin (ich hatte es nicht getestet, nur runtergetippt *schäm*):
Hier:
sKey = "HKEY_CURRENT_USER\NETWORK\" & path & "\RemotePath" 'UNC mit Explorer Letter wählen
heißt es natürlich:
sKey = "HKEY_CURRENT_USER\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen
-oder-
sKey = "HKCU\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen
und hier:
Set WshShell = Null
natürlich
Set WshShell = Nothing
Die Reg-Datei dafür sieht bei mir so aus:
Anm.: passend aufs obige Skript natürlich: [@="wscript c:\\temp\\sendpath.vbs \"%1\""]
Gruß
Biber
ich hatte noch zwei Tippfehler drin (ich hatte es nicht getestet, nur runtergetippt *schäm*):
Hier:
sKey = "HKEY_CURRENT_USER\NETWORK\" & path & "\RemotePath" 'UNC mit Explorer Letter wählen
heißt es natürlich:
sKey = "HKEY_CURRENT_USER\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen
-oder-
sKey = "HKCU\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen
und hier:
Set WshShell = Null
natürlich
Set WshShell = Nothing
Die Reg-Datei dafür sieht bei mir so aus:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Send To OL as UNCName]
[HKEY_CLASSES_ROOT\*\Shell\Send To OL as UNCName\command]
@="wscript d:\\temp\\uncpath.vbs \"%1\""
Gruß
Biber
Thx, dmo,
für die Rückmeldung.
Ich fand Deine Idee ja auch ganz anregend und habe diese Kontextmenü-Erweiterung auch bei meinem Rechner drin gelassen.
In irgendeiner Mittagspause werde ich das bei mir noch mal dahingehend abändern, dass ich den UNC-Pfad in die Zwischenablage kopiere statt in eine neue (leere) Mail. Denn meistens brauche ich diese UNC-Pfade ja doch, wenn ich anderen Verweise auf Dateien mailen will. So wie Du auch. Aber ich fange normalerweise ja keine Mail damit an, dass ich als erst den Datei-Link einfüge und danach den eigentlichen Mailtext davor schreibe.
Ist aber nur eine Variation Deines Ansatzes.
Das ist ja das Schöne an Batch, Skripts und. Beton - es kommt immer darauf an, was man/frau daraus macht....
Kannst Du bitte diesen Beitrag auf "Gelöst" setzen? Kann nur der Thread-Ersteller, weil dieses hier (VB/VBA..) ein Mod-loser Anarcho-Bereich ist.
Viel Spaß mit C++ und den Q-Tipps
Biber
für die Rückmeldung.
Ich fand Deine Idee ja auch ganz anregend und habe diese Kontextmenü-Erweiterung auch bei meinem Rechner drin gelassen.
In irgendeiner Mittagspause werde ich das bei mir noch mal dahingehend abändern, dass ich den UNC-Pfad in die Zwischenablage kopiere statt in eine neue (leere) Mail. Denn meistens brauche ich diese UNC-Pfade ja doch, wenn ich anderen Verweise auf Dateien mailen will. So wie Du auch. Aber ich fange normalerweise ja keine Mail damit an, dass ich als erst den Datei-Link einfüge und danach den eigentlichen Mailtext davor schreibe.
Ist aber nur eine Variation Deines Ansatzes.
Das ist ja das Schöne an Batch, Skripts und. Beton - es kommt immer darauf an, was man/frau daraus macht....
Kannst Du bitte diesen Beitrag auf "Gelöst" setzen? Kann nur der Thread-Ersteller, weil dieses hier (VB/VBA..) ein Mod-loser Anarcho-Bereich ist.
Viel Spaß mit C++ und den Q-Tipps
Biber
Hm, dmo,
der Weg wäre mir zu steinig...
Da würde ich (schon wegen meiner mir angeborenen Faulheit) eher aus VBS einen Shellaufruf (oder Batchaufruf) machen mit "Net use|find X:>out.tmp"
Wenn X: ein Netzlaufwerk ist, dann steht im dritten Token der "\\server\share.."-Name.
Oder, wenn es in VBS einfacher zu ermitteln ist, alles ab "\\" inclusive.
Eine API-Funktion in VBS einbinden.. bin ich nicht sicher, ob das geht.
Und, ich sehe es schon kommen, dann gehen uns immer noch mögliche SUBST-Laufwerke durch die Lappen... auch die müsste man/frau bei so einem TRUENAME-Clone einbauen.
Mal sehen, wenn ich mal eine gaaaaaaaaaaanz lange Mittagspause habe..
Gruß
Biber
der Weg wäre mir zu steinig...
Da würde ich (schon wegen meiner mir angeborenen Faulheit) eher aus VBS einen Shellaufruf (oder Batchaufruf) machen mit "Net use|find X:>out.tmp"
Wenn X: ein Netzlaufwerk ist, dann steht im dritten Token der "\\server\share.."-Name.
Oder, wenn es in VBS einfacher zu ermitteln ist, alles ab "\\" inclusive.
Eine API-Funktion in VBS einbinden.. bin ich nicht sicher, ob das geht.
Und, ich sehe es schon kommen, dann gehen uns immer noch mögliche SUBST-Laufwerke durch die Lappen... auch die müsste man/frau bei so einem TRUENAME-Clone einbauen.
Mal sehen, wenn ich mal eine gaaaaaaaaaaanz lange Mittagspause habe..
Gruß
Biber
So,
der Vollständigkeit noch eine Variation des Themas - UNCPath2.vbs mit gleicher Funktionalität, aber Ermittlung der Netzlaufwerke über einen einfacheren Weg.
Geht bestimmt auch eleganter, aber es tut, was es soll.
Grüße
Biber
der Vollständigkeit noch eine Variation des Themas - UNCPath2.vbs mit gleicher Funktionalität, aber Ermittlung der Netzlaufwerke über einen einfacheren Weg.
'--snipp c:\temp\UncPath2.vbs
Option Explicit
Dim ol, mail
Dim strUncPfad, WShNetwork, coldrives, i
Dim fso, path, DriveLetter
Dim Debug
Debug=False ' auf TRUE setzen für Meldungen
' übergebenen Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0))
path=fso.GetAbsolutePathName(wscript.arguments(0))
Set fso = nothing
DriveLetter = Ucase(Left(path, 1))
path = Mid(path,3)
if Debug then Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 2
If colDrives(i)=DriveLetter & ":" then
if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)
' ....Ausgabe.................................S: ist \\serverXY\freigabeZ
strUncPfad=colDrives(i+1)
End if
Next
End If
Set WshNetwork = Nothing
Set coldrives = Nothing
if (len( strUncPfad) = 0) then
strUncPfad=DriveLetter & ":"
else
if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]"
End if
if Debug then wscript.echo "strUncPfad + path: [" & strUncPfad & path & "]"
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.body = "Dateilink: " & strUncPfad & path
mail.Display
'--snapp c:\temp\UncPath2.vbs
Geht bestimmt auch eleganter, aber es tut, was es soll.
Grüße
Biber
Na gut, dmo,
das sollte gehen... das FileSystemObject im VB hat meines Wissens nach auch eine "ShortName/ShortPath"-Eigenschaft - beim "File".
Also müssten halt gegen Ende noch zwei, drei Zeilen mehr rein:
...aber dann hast Du wieder dieses kryptische Geraffel :"DOKUME~1\EIGENE~1\BLA"
Wäre es nicht einfacher, den bisherigen Ausgabestring in Anführungszeichen zu packen?
Grüße
Biber
das sollte gehen... das FileSystemObject im VB hat meines Wissens nach auch eine "ShortName/ShortPath"-Eigenschaft - beim "File".
Also müssten halt gegen Ende noch zwei, drei Zeilen mehr rein:
....
Set fso = CreateObject("Scripting.FileSystemObject")
Set ofile = fso.GetFile(strUncPfad & path)
StrShortname= ofile.ShortPath // und/oder ofile.ShortName
...
...aber dann hast Du wieder dieses kryptische Geraffel :"DOKUME~1\EIGENE~1\BLA"
Wäre es nicht einfacher, den bisherigen Ausgabestring in Anführungszeichen zu packen?
Grüße
Biber
Nachtrag aus gegebenem Anlass....
Weil heute per Zufall @twi3ter in einem neuen Thread die gleiche Anforderung hatte und auch diesen Beitrag hier fand, reiche ich noch eine kleine Verbesserung nach.
Der oben gepostete Code funktioniert eigentlich, wie wir Skripter sagen.
Aber: Wenn Leerzeichen im Link sind, dann wird es nur bis zum ersten Leerzeichen als Link erkannt (Text bzw. Verzeichnis-/Dateiname kommt vollständig an, aber...).
Abhilfe: Als Mail-Format HTML benutzen, d.h. die letzten (gefühlten) 5 Zeilen so ändern:
Grüße Biber
Weil heute per Zufall @twi3ter in einem neuen Thread die gleiche Anforderung hatte und auch diesen Beitrag hier fand, reiche ich noch eine kleine Verbesserung nach.
Der oben gepostete Code funktioniert eigentlich, wie wir Skripter sagen.
Aber: Wenn Leerzeichen im Link sind, dann wird es nur bis zum ersten Leerzeichen als Link erkannt (Text bzw. Verzeichnis-/Dateiname kommt vollständig an, aber...).
Abhilfe: Als Mail-Format HTML benutzen, d.h. die letzten (gefühlten) 5 Zeilen so ändern:
....
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>"
' # hier die bisherigere Zeile
' mail.body = "Dateilink: " & "<file:///" & strUncPfad & path &">"
' # ende der Ersetzung im alten Code
mail.Display
'--snapp UncPath.vbs
Grüße Biber
Also hab jetzt mal dein geändertes Script mit Outlook 2003 getestet, es öffnet eine neue Mail aber ohne Inhalt?
Die Vorgängerversion ist gelaufen aber halt ohne eine direkte Verlinkung!
In Zeile 6 ist noch ein Hochkomma was dort eigentlich nicht sein sollte oder? Hab des mal entfernt geht aber trotzdem nicht ?!
Die Vorgängerversion ist gelaufen aber halt ohne eine direkte Verlinkung!
In Zeile 6 ist noch ein Hochkomma was dort eigentlich nicht sein sollte oder? Hab des mal entfernt geht aber trotzdem nicht ?!
Moin twist3er,
kann ich nicht nachvollziehen... ich habe diese Zeilen aus "meiner" auf diesemm Rechner aktiven Kontextmenü-UncPath.vbs geCopy&pastet.
Bei mir funktioniert es - es wird eine (HTML-)Mail geöffnet und der vollständige link der Datei in den Mail-Body übernommen.
Die auskommentierte Zeile ist ja nur der alte Stand ... die Zeile, die für NICHT-HTML-Mails galt.
Bei mir tut es mit XP SP2 und Outlook 2002.
BullShit.
Man/frau postet auch nicht nur 5 Zeilen einer 40 Zeilen-Datei aus Sparsamkeitsgründen.
In meiner Version hatte ich statt der Variablen StrUncpath als Variable Strpath benutzt... vergiss es.
Hier nochmal der komplette Code :
Grüße
Biber
Bei mir funktioniert es - es wird eine (HTML-)Mail geöffnet und der vollständige link der Datei in den Mail-Body übernommen.
Die auskommentierte Zeile ist ja nur der alte Stand ... die Zeile, die für NICHT-HTML-Mails galt.
Bei mir tut es mit XP SP2 und Outlook 2002.
BullShit.
Man/frau postet auch nicht nur 5 Zeilen einer 40 Zeilen-Datei aus Sparsamkeitsgründen.
In meiner Version hatte ich statt der Variablen StrUncpath als Variable Strpath benutzt... vergiss es.
Hier nochmal der komplette Code :
'--snipp UncPath.vbs
Option Explicit
Dim ol, mail
Dim strUncPfad, WShNetwork, coldrives, i, strPath
Dim fso, path, DriveLetter
Dim Debug
Debug=False ' auf TRUE setzen für Meldungen
' übergebenen Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0))
path=fso.GetAbsolutePathName(wscript.arguments(0))
Set fso = nothing
DriveLetter = Ucase(Left(path, 1))
path = Mid(path,3)
if Debug then Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 1
If colDrives(i)=DriveLetter & ":" then
if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)
strUncPfad=colDrives(i+1)
End if
Next
End If
Set WshNetwork = nothing
Set coldrives = nothing
if (len( strUncPfad) = 0) then
strUncPfad=DriveLetter & ":"
else
if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]"
End if
strPath = strUncPfad & path
if Debug then wscript.echo "strUncPfad + path: [" & strPfad & "]"
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>"
mail.Display
'--snapp UncPath.vbs
Biber
Moin twi3ster,
Fragen:
Wie - was war denn da noch offen? Ich habe doch oben unter Kommentar #3 eine .reg-Beispieldatei gepostet??
Aber okay - ohne andere Rückmeldungen kann ich auch nur behaupten, dass es bei mir funktioniert...
ist aber wirklich so....menno...
Ich habe es HEUTE/JETZT mit lokalen und Netz-Dateien mit und ohne Leerzeichen probiert, mir selbst diese Mails mit Dateilink gemailt und ALLE Dateien (bzw. Links) per Doppelklick öffnen können. Keine Auffälligkeiten.
Mehr kann ich im Moment nicht sinnvoll testen.
Sorry
Biber
[Edit 12.6.2008] BTW - eigentlich sollte das auch egal sein, ob der Link ganz unterstrichen dargestellt wird bzw. was in dem angezeigten Feld als "Dateiname" drinsteht. Der Link selbst steht ja nach dem Wort "file://" in der Variablen strpath.
Und dort, wo in dieser Zeile das zweite Mal strpath als "Anzeigetext" steht, da kannst Du auch "MfG" oder "Hier ist die Datei" reinschreiben.
[Edit]
die Verlinkung geht nur bis zu dem Leerzeichen!
Bei mir nicht, und ich verwende den geposteten Schipsel sowie OL2002 unter XP SP2Fragen:
- wird denn bei Dir eine HTML-Mail erzeugt oder "nur" eine Plain-Text-Mail? Denn da gibt es irgendeine OL-Voreinstellung...
- Du bist Dir auch sicher, dass Du die jetzt gepostete Variante benutzt, d.h. wenn Du im Quellcode die Variable "Debug" auf True setzt, erscheinen bei Dir irgendwelche MsgBoxen?
Haste du eigentlich nochmal was mit dem Registry-Eintrag bezüglich des Senden an Menüs hinbekommen?
Wie - was war denn da noch offen? Ich habe doch oben unter Kommentar #3 eine .reg-Beispieldatei gepostet??
Aber okay - ohne andere Rückmeldungen kann ich auch nur behaupten, dass es bei mir funktioniert...
ist aber wirklich so....menno...
Ich habe es HEUTE/JETZT mit lokalen und Netz-Dateien mit und ohne Leerzeichen probiert, mir selbst diese Mails mit Dateilink gemailt und ALLE Dateien (bzw. Links) per Doppelklick öffnen können. Keine Auffälligkeiten.
Mehr kann ich im Moment nicht sinnvoll testen.
Sorry
Biber
[Edit 12.6.2008] BTW - eigentlich sollte das auch egal sein, ob der Link ganz unterstrichen dargestellt wird bzw. was in dem angezeigten Feld als "Dateiname" drinsteht. Der Link selbst steht ja nach dem Wort "file://" in der Variablen strpath.
Und dort, wo in dieser Zeile das zweite Mal strpath als "Anzeigetext" steht, da kannst Du auch "MfG" oder "Hier ist die Datei" reinschreiben.
[Edit]
Klasse Sache dieses Script.
Ich habe es noch an einer Stelle etwas überarbeitet, damit die in Outlook verwendete Signatur gleich mit angehängt wird:
Und dieses erweiterte Registry File erweitert die Möglichkeit auch auf Ordner:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Link an Outlook reichen]
[HKEY_CLASSES_ROOT\*\Shell\Link an Outlook reichen\command]
@="wscript c:\\Path.vbs \"%1\""
[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen]
[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen\command]
@="wscript c:\\Path.vbs \"%1\""
Die Bezeichnungen habe ich natürlich nach meinen Wünschen angepasst.
Nochmal Danke für die Ausarbeitung!!!!!!!!!!!!!!!!!!!!
Ich habe es noch an einer Stelle etwas überarbeitet, damit die in Outlook verwendete Signatur gleich mit angehängt wird:
'--snipp UncPath.vbs
Option Explicit
Dim ol, mail
Dim strUncPfad, WShNetwork, coldrives, i, strPath
Dim fso, path, DriveLetter
Dim Debug
Debug=False ' auf TRUE setzen für Meldungen
' übergebenen Pfad vom Explorer auslesen
Set fso = CreateObject("Scripting.FileSystemObject")
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0))
path=fso.GetAbsolutePathName(wscript.arguments(0))
Set fso = nothing
DriveLetter = Ucase(Left(path, 1))
path = Mid(path,3)
if Debug then Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 1
If colDrives(i)=DriveLetter & ":" then
if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)
strUncPfad=colDrives(i+1)
End if
Next
End If
Set WshNetwork = nothing
Set coldrives = nothing
if (len( strUncPfad) = 0) then
strUncPfad=DriveLetter & ":"
else
if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]"
End if
strPath = strUncPfad & path
if Debug then wscript.echo "strUncPfad + path: [" & strPfad & "]"
'Link an Outlook übergeben
Set ol = CreateObject ("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.Display
with mail
.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>" & mail.HTMLBody
End with
'--snapp UncPath.vbs
Und dieses erweiterte Registry File erweitert die Möglichkeit auch auf Ordner:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Link an Outlook reichen]
[HKEY_CLASSES_ROOT\*\Shell\Link an Outlook reichen\command]
@="wscript c:\\Path.vbs \"%1\""
[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen]
[HKEY_CLASSES_ROOT\Folder\Shell\Link an Outlook reichen\command]
@="wscript c:\\Path.vbs \"%1\""
Die Bezeichnungen habe ich natürlich nach meinen Wünschen angepasst.
Nochmal Danke für die Ausarbeitung!!!!!!!!!!!!!!!!!!!!
Moin napperman,
danke auch an Dich.
Die Erweiterung auf Folder ist auch sinnvoll - werde ich auch bei mir einbauen.
Und wenn die EM mal vorbei ist und wir alle wieder vieeeeeeeeeel Zeit haben, dann schau ich mir vielleicht noch mal diese Variante mit "mehrere Dateien anklicken und in einer Mail aufführen" an. [Falls bastla nicht schneller ist...]
@all
Die ganzen Zeilen mit "if Debug then ..." brauchen natürlich in dem "produktiven" Skript nicht mit dabei sein. Die waren nur zum Nachvollziehen und Testen während de gemeinsamen Lösungsfindung hier im Forum gedacht.
Grüße
Biber
P.S. ich habe den vbs-Schnipsel in Deinem Kommentar mal in -Tags gesetzt.
danke auch an Dich.
Die Erweiterung auf Folder ist auch sinnvoll - werde ich auch bei mir einbauen.
Und wenn die EM mal vorbei ist und wir alle wieder vieeeeeeeeeel Zeit haben, dann schau ich mir vielleicht noch mal diese Variante mit "mehrere Dateien anklicken und in einer Mail aufführen" an. [Falls bastla nicht schneller ist...]
@all
Die ganzen Zeilen mit "if Debug then ..." brauchen natürlich in dem "produktiven" Skript nicht mit dabei sein. Die waren nur zum Nachvollziehen und Testen während de gemeinsamen Lösungsfindung hier im Forum gedacht.
Grüße
Biber
P.S. ich habe den vbs-Schnipsel in Deinem Kommentar mal in -Tags gesetzt.
Sorry, dass ich den alten Thread hier nochmal auspacke, aber ich habe versucht die Lösung bei mir zu nutzen, wenn ich nun aber versuche den Link zu übernehmen erhalte ich folgende Fehlermeldung:
"Für diesen Vorgang ist keine Anwendung der angegebenen Datei zugeordnet. Erstellen sie eine Zuordnung, indem Sie unter "Systemsteuerung" auf "Ordneroptionen" klicken"
Hat jemand ne Ahnung, wie ich das Problem beheben kann?
"Für diesen Vorgang ist keine Anwendung der angegebenen Datei zugeordnet. Erstellen sie eine Zuordnung, indem Sie unter "Systemsteuerung" auf "Ordneroptionen" klicken"
Hat jemand ne Ahnung, wie ich das Problem beheben kann?