Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

kompletten Dateipfad von Netzlaufwerk an Outlook übergeben

Anleitung Entwicklung VB for Applications

Mitglied: dmo

dmo (Level 1) - Jetzt verbinden

30.03.2006, aktualisiert 20.06.2008, 27153 Aufrufe, 25 Kommentare

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
Mitglied: Biber
31.03.2006 um 00:45 Uhr
Moin dmo,
so sollte es etwas besser gehen:
01.
'--snipp c:\temp\sendpath.vbs 
02.
Option Explicit 
03.
Dim ol, mail 
04.
Dim strg, sKey 
05.
Dim WshShell ', wsshell 
06.
Dim fso, path, DriveLetter 
07.
Dim Debug 
08.
Debug=False ' auf TRUE setzen für Meldungen 
09.
'---- Einmalig--nicht hier-- Dim wsshell 
10.
'---- Einmalig--nicht hier-- Regeintrag generieren 
11.
'---- Einmalig--nicht hier-- Set Wsshell = WScript.CreateObject("WScript.Shell") 
12.
'---- Einmalig--nicht hier-- Wsshell.RegWrite "HKCR\*\Shell\Pfad senden\command\", _ 
13.
'---- Einmalig--nicht hier-- "wscript ""C:\temp\sendpath.vbs""%1", "REG_SZ" 
14.
 
15.
'Pfad vom Explorer auslesen 
16.
Set fso = CreateObject("Scripting.FileSystemObject")  
17.
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0)) 
18.
path=fso.GetAbsolutePathName(wscript.arguments(0)) 
19.
DriveLetter = Left(path, 1) 
20.
path = Mid(path,3) 
21.
if Debug then  Wscript.Echo "DriveLetter " & DriveLetter 'Ausgabe des ersten Zeichen 
22.
 
23.
'Pfad aus der Registry 
24.
Set WshShell = CreateObject("WScript.Shell")  
25.
On Error resume Next ' falls es kein Netzwerk-Drive ist...dann lassen wir ihn so. 
26.
sKey = "HKEY_CURRENT_USER\NETWORK\" & DriveLetter & "\RemotePath" 'UNC mit Explorer Letter wählen 
27.
strg = WshShell.RegRead(sKey) 'Ausgabe des Pfades der Registry 
28.
Set WshShell = Nothing 
29.
if (len(Strg) = 0) then  
30.
  strg=DriveLetter & ":" 
31.
else 
32.
  if Debug then wscript.echo "Strg aus REG: [" & strg &"]" 
33.
End if  
34.
if Debug then wscript.echo "Strg + path: [" & strg & path & "]" 
35.
'Link an Outlook übergeben  
36.
Set ol = CreateObject ("Outlook.Application")  
37.
Set mail = ol.CreateItem(0) 
38.
mail.body = "Dateilink: " & strg & path 
39.
mail.Display 
40.
'--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
01.
cscript //nologo c:\temp\sendpath.vbs c:\temp\sendpath.vbs  
02.
-oder- 
03.
cscript //nologo c:\temp\sendpath.vbs Y:\Share\MeineDateiAufmNetzlaufwerk.xyz
Hope That Helps
Biber
[Edit] Die unten erwähnten Tippfehler sind im Source korrigiert.[/Edit]
Bitte warten ..
Mitglied: dmo
04.04.2006 um 09:45 Uhr
Hallo und vielen Dank für die Hilfe.

Ich habe es getestet und es geht zumindest in und aus der Dos-Box.

Das letzte zu fixende Problem ist nun noch der Eintrag ins Kontextmenu.
Ist der Teil zum Eintrag in die Reg, welcher natürlich noch ausgelagert wird, syntaktisch richtig?
Ich probiere hier schon hin und her. Habe auch überlegt, vieleicht doch nur in das "senden an" Menu und garnicht in die Registry. Ich denke Kontext läßt sich beim User besser einprägen, da gleich sichtbar.

Naja wie auch immer. Ich testete den getunten Schnipsel noch mit dem zu entfernenden Regeintrags-part ;o). Und irgendwie gibts da einen komischen effekt.

Und zwar:
Bei einem NW-Pfad bei dem ein Ordner ein Leerzeichen beinhaltet bricht das Script bei dem Leerzeichen ab.

Bei z.B. Y:\Service MGMT\xyz\datei.txt
kommt die Meldung "C:\temp\sendpath.vbsY:/Service" hat keine Dateierweiterung.

oder

Bei z.B. Y:\Betrieb\Files\datei.xls
kommt die Meldung: Für die Dateierweiterung ".xls" gibt es kein Skriptmodul.

Ich brauche dafür noch mal Hilfe und Erklärung, damit ich das mal verstehe.
Bitte warten ..
Mitglied: Biber
04.04.2006 um 12:01 Uhr
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:
01.
Windows Registry Editor Version 5.00 
02.
 
03.
[HKEY_CLASSES_ROOT\*\Shell\Send To OL as UNCName] 
04.
 
05.
[HKEY_CLASSES_ROOT\*\Shell\Send To OL as UNCName\command] 
06.
@="wscript d:\\temp\\uncpath.vbs \"%1\""
Anm.: passend aufs obige Skript natürlich: [@="wscript c:\\temp\\sendpath.vbs \"%1\""]
Gruß
Biber
Bitte warten ..
Mitglied: dmo
04.04.2006 um 18:18 Uhr
Hallo Biber,

das sorry muss nicht sein, da ich sehr dankbar für Deine Hilfe bin.
Ich probier das mal und danke aber vorab dafür.

Meld mich dann mal
Gruß DMO
Bitte warten ..
Mitglied: dmo
11.04.2006 um 09:33 Uhr
Hallo Biber,

also ich habe das script nun getestet und es rockt vom feinsten. Was nicht alles geht.

Dank Dir sehr.

Habe nun für mein Studium mit C++ und QT so meine Beschäftigung.
hope to c u here, next

Mit freundlichen Grüßen
dmo
Bitte warten ..
Mitglied: Biber
11.04.2006 um 09:54 Uhr
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
Bitte warten ..
Mitglied: dmo
11.04.2006 um 12:43 Uhr
Hallo Biber,

ich habe noch einen Bug gefunden, der eigentlich keiner ist.
Soll heißen, dass das Script den UNC Pfad nicht auslesen kann, wenn das Network-Drive nicht automatisch vom System gemappt wird. Dann steht auch kein Drive Eintrag in der Registry. z.B. werden Homeshares ja oft über den User Account im AD gemappt. Nun gibt es ja die Möglichkeit, dies mit WMI zu machen, denn mit dem Befehl net use in der cmd kann ich ja den UNC-Pfad sehen.
Da habe ich folgende Idee bei --www.vbarchiv.net/archiv/tipp_264.html-- gefunden. Nur weiß ich nicht wirklich, wie ich das implementieren kann. Hast Du eine Idee? Ich bin noch auf Lösungssuche.

viele Grüße
dmo
Bitte warten ..
Mitglied: Biber
11.04.2006 um 13:23 Uhr
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
Bitte warten ..
Mitglied: dmo
11.04.2006 um 13:38 Uhr
Hallo Biber,

aaah- genial einfacher Lösungsansatz, ich denke mich mal rein.
Mal sehen, wer zuerst die längste Pause hat.
Was meinst Du mit SUBST-LW?

viele Grüße
der ;o) dmo
Bitte warten ..
Mitglied: Biber
11.04.2006 um 13:46 Uhr
...diese hier:
(am CMD-Prompt

subst u: d:\temp
( D:\temp lässt sich sich als laufwerk U: ansprechen)

subst
U:\: => D:\temp

(so wird es abgefragt).

Ist ein bisschen aus der Mode gekommen, aber theoretisch noch zu berücksichtigen.
Aber nur von Perfektionisten.

Gruß
Biber
Bitte warten ..
Mitglied: dmo
11.04.2006 um 14:17 Uhr
... also im Prinzip eine Substitiution. Da leuchtet doch glatt das SUBST ein.

viele Grüße
dmo
Bitte warten ..
Mitglied: Biber
18.04.2006 um 11:45 Uhr
So,
der Vollständigkeit noch eine Variation des Themas - UNCPath2.vbs mit gleicher Funktionalität, aber Ermittlung der Netzlaufwerke über einen einfacheren Weg.

01.
'--snipp c:\temp\UncPath2.vbs 
02.
Option Explicit 
03.
Dim ol, mail 
04.
Dim strUncPfad, WShNetwork, coldrives, i 
05.
Dim fso, path, DriveLetter 
06.
Dim Debug 
07.
Debug=False ' auf TRUE setzen für Meldungen 
08.
' übergebenen Pfad vom Explorer auslesen 
09.
Set fso = CreateObject("Scripting.FileSystemObject")  
10.
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0)) 
11.
path=fso.GetAbsolutePathName(wscript.arguments(0)) 
12.
Set fso = nothing 
13.
DriveLetter = Ucase(Left(path, 1)) 
14.
path = Mid(path,3) 
15.
if Debug then  Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen 
16.
Set WshNetwork = Wscript.CreateObject("Wscript.Network") 
17.
Set colDrives = WshNetwork.EnumNetworkDrives 
18.
 
19.
On Error Resume Next 
20.
If colDrives.Count > 0 Then 
21.
  For i = 0 To colDrives.Count - 1 Step 2 
22.
   If colDrives(i)=DriveLetter & ":" then 
23.
     if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)  
24.
     ' ....Ausgabe.................................S: ist \\serverXY\freigabeZ 
25.
     strUncPfad=colDrives(i+1) 
26.
   End if   
27.
  Next 
28.
End If 
29.
Set WshNetwork = Nothing 
30.
Set coldrives = Nothing 
31.
if (len( strUncPfad) = 0) then  
32.
  strUncPfad=DriveLetter & ":" 
33.
else 
34.
  if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]" 
35.
End if  
36.
 
37.
if Debug then wscript.echo "strUncPfad + path: [" & strUncPfad & path & "]" 
38.
'Link an Outlook übergeben  
39.
Set ol = CreateObject ("Outlook.Application")  
40.
Set mail = ol.CreateItem(0) 
41.
mail.body = "Dateilink: " & strUncPfad & path 
42.
mail.Display 
43.
'--snapp c:\temp\UncPath2.vbs
Geht bestimmt auch eleganter, aber es tut, was es soll.

Grüße
Biber
Bitte warten ..
Mitglied: dmo
25.04.2006 um 15:10 Uhr
Hallo Biber,

das ist genau mein Lösungsansatz mit EnumNetworkDrives und den Spalten. Ich bin nun dabei Deine Idee mit dem Clipboard umzusetzen
Die erste Version mit dem erneuten Öffnen ist nicht immer der beste Weg ist.

Ich habe gelesen, dass VbScript direkt kein Clipboard unterstützt und man hier über eine ActiveX-Instanz des Internet-Explorers erst zur Seite navigieren muss.
Der Aufruf sähe dann so aus:

Set objArgs = WScript.Arguments
if (objArgs.Count=0) then MsgBox "Bitte Parameter angeben": WScript.Quit
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.Document.Parentwindow.ClipboardData.SetData "Text", objArgs(0)
objIE.Quit: Set objIE = Nothing

Hier wird allerdings kein UNC behandelt. Deshalb probier ich mich an einer Lösung den Pfad, den ich per Script ja herausbekomme an eine Variable zu übergeben, deren Wert dann ans Clipboard übergeben wird. Ungefähr so: Clipboard.SetText "hier nun keinen Text sondern den Variablenwert übergeben". Wobei es bei SetText nur möglich ist, einen String zu übergeben.
Vielleicht aber auch den Pfad ins Notepad und dann in die Zwischenablage, oder kann man denn <strUncPfad + path> direkt an das Clipboard übergeben.
Was meinst Du?

Mal sehen wie es weitergeht.
Ich denke, es nimmt langsam an Eleganz zu.


Mit freundlichen Grüßen
dmo
Bitte warten ..
Mitglied: dmo
26.04.2006 um 14:36 Uhr
Hallo!

Ich habe nun mal ein bisschen rumgetestet und versuche nun eine Lösung zu finden den Pfadstring in die 8.3 Konvention zu überführen, da z.B. nicht jeder Pfad ohne Leerzeichen auskommt.

Gruß

dmo
Bitte warten ..
Mitglied: Biber
26.04.2006 um 15:15 Uhr
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:
01.
.... 
02.
Set fso = CreateObject("Scripting.FileSystemObject")  
03.
Set ofile = fso.GetFile(strUncPfad & path)  
04.
 
05.
StrShortname= ofile.ShortPath  // und/oder ofile.ShortName 
06.
...
...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
Bitte warten ..
Mitglied: dmo
19.06.2006 um 13:09 Uhr
Dank an Biber für die tolle Zusammenarbeit.
Bitte warten ..
Mitglied: Biber
10.06.2008 um 14:26 Uhr
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:

01.
.... 
02.
'Link an Outlook übergeben 
03.
Set ol = CreateObject ("Outlook.Application")  
04.
Set mail = ol.CreateItem(0) 
05.
mail.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>" 
06.
' # hier die bisherigere Zeile 
07.
' mail.body = "Dateilink: " & "<file:///" & strUncPfad & path &">" 
08.
' # ende der Ersetzung im alten Code 
09.
mail.Display 
10.
'--snapp UncPath.vbs
Grüße Biber
Bitte warten ..
Mitglied: twi3ter
10.06.2008 um 15:02 Uhr
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 ?!
Bitte warten ..
Mitglied: Biber
10.06.2008 um 15:49 Uhr
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 :
01.
'--snipp UncPath.vbs 
02.
Option Explicit 
03.
Dim ol, mail 
04.
Dim strUncPfad, WShNetwork, coldrives, i, strPath 
05.
Dim fso, path, DriveLetter 
06.
Dim Debug 
07.
Debug=False ' auf TRUE setzen für Meldungen 
08.
' übergebenen Pfad vom Explorer auslesen 
09.
Set fso = CreateObject("Scripting.FileSystemObject")  
10.
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0)) 
11.
path=fso.GetAbsolutePathName(wscript.arguments(0)) 
12.
Set fso = nothing 
13.
DriveLetter = Ucase(Left(path, 1)) 
14.
path = Mid(path,3) 
15.
if Debug then  Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen 
16.
Set WshNetwork = Wscript.CreateObject("Wscript.Network") 
17.
Set colDrives = WshNetwork.EnumNetworkDrives 
18.
 
19.
On Error Resume Next 
20.
If colDrives.Count > 0 Then 
21.
  For i = 0 To colDrives.Count - 1 Step 1 
22.
   If colDrives(i)=DriveLetter & ":" then 
23.
     if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)  
24.
     strUncPfad=colDrives(i+1) 
25.
   End if   
26.
  Next 
27.
End If 
28.
Set WshNetwork = nothing 
29.
Set coldrives = nothing 
30.
if (len( strUncPfad) = 0) then  
31.
  strUncPfad=DriveLetter & ":" 
32.
else 
33.
  if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]" 
34.
End if  
35.
strPath = strUncPfad & path  
36.
if Debug then wscript.echo "strUncPfad + path: [" & strPfad & "]" 
37.
'Link an Outlook übergeben  
38.
Set ol = CreateObject ("Outlook.Application")  
39.
Set mail = ol.CreateItem(0) 
40.
mail.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>" 
41.
mail.Display 
42.
'--snapp UncPath.vbs
Grüße
Biber
Bitte warten ..
Mitglied: twi3ter
11.06.2008 um 13:01 Uhr
Hallo,

hab den kompletten Quelltext jetzt ersetzt, die Verlinkung geht nur bis zu dem Leerzeichen!

Benutze Win XP SP2 mit Outlook 2003 SP3

Haste du eigentlich nochmal was mit dem Registry-Eintrag bezüglich des Senden an Menüs hinbekommen?

Gruß

Nils
Bitte warten ..
Mitglied: Biber
11.06.2008 um 19:01 Uhr
Moin twi3ster,

die Verlinkung geht nur bis zu dem Leerzeichen!
Bei mir nicht, und ich verwende den geposteten Schipsel sowie OL2002 unter XP SP2

Fragen:
  • 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 "Mit freundlichen Grüßen" oder "Hier ist die Datei" reinschreiben.
[Edit]
Bitte warten ..
Mitglied: napperman
16.06.2008 um 11:47 Uhr
Wenn man das jetzt noch hinkriegen könnte, dass das Script bei mehreren markierten Dateien nicht für jede eine neue Mail erstellt, sondern alle Links in eine Mail packt wäre es perfekt...
Bitte warten ..
Mitglied: napperman
20.06.2008 um 13:04 Uhr
Klasse Sache dieses Script.
Ich habe es noch an einer Stelle etwas überarbeitet, damit die in Outlook verwendete Signatur gleich mit angehängt wird:
01.
'--snipp UncPath.vbs  
02.
Option Explicit  
03.
Dim ol, mail  
04.
Dim strUncPfad, WShNetwork, coldrives, i, strPath  
05.
Dim fso, path, DriveLetter  
06.
Dim Debug  
07.
Debug=False ' auf TRUE setzen für Meldungen  
08.
' übergebenen Pfad vom Explorer auslesen  
09.
Set fso = CreateObject("Scripting.FileSystemObject")   
10.
if Debug then wscript.echo fso.GetAbsolutePathName(wscript.arguments(0))  
11.
path=fso.GetAbsolutePathName(wscript.arguments(0))  
12.
Set fso = nothing  
13.
DriveLetter = Ucase(Left(path, 1))  
14.
path = Mid(path,3)  
15.
if Debug then  Wscript.Echo "DriveLetter " & DriveLetter & " path:" & path 'Ausgabe des ersten Zeichen  
16.
Set WshNetwork = Wscript.CreateObject("Wscript.Network")  
17.
Set colDrives = WshNetwork.EnumNetworkDrives  
18.
On Error Resume Next  
19.
If colDrives.Count > 0 Then  
20.
  For i = 0 To colDrives.Count - 1 Step 1  
21.
   If colDrives(i)=DriveLetter & ":" then  
22.
    if Debug then wscript.echo colDrives(i) & " ist " & colDrives(i+1)   
23.
     strUncPfad=colDrives(i+1)  
24.
   End if    
25.
  Next  
26.
End If  
27.
Set WshNetwork = nothing  
28.
Set coldrives = nothing  
29.
if (len( strUncPfad) = 0) then   
30.
  strUncPfad=DriveLetter & ":"  
31.
else  
32.
  if Debug then wscript.echo "UNC-Pfad: [" & strUncPfad &"]"  
33.
End if   
34.
strPath = strUncPfad & path   
35.
if Debug then wscript.echo "strUncPfad + path: [" & strPfad & "]"  
36.
'Link an Outlook übergeben   
37.
Set ol = CreateObject ("Outlook.Application")   
38.
Set mail = ol.CreateItem(0) 
39.
mail.Display 
40.
with mail 
41.
.HTMLBody = "<HTML><BODY><A href=""file:///" & strPath & """>" & strpath & "</A> </BODY></HTML>" & mail.HTMLBody 
42.
End with 
43.
'--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!!!!!!!!!!!!!!!!!!!!
Bitte warten ..
Mitglied: Biber
20.06.2008 um 13:55 Uhr
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 <code>-Tags gesetzt.
Bitte warten ..
Mitglied: toexelchen
07.07.2011 um 13:55 Uhr
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?
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Outlook & Mail
Outlook Ablage - habt ihr eine Idee? (2)

Frage von MegaGiga zum Thema Outlook & Mail ...

Windows 10
Surface 4 Pro Netzlaufwerk verbinden (4)

Frage von Yannosch zum Thema Windows 10 ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Windows Netzwerk
Netzlaufwerk offline verfügbar für Mac

Frage von PharIT zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...