Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA -UNC-PfadFAD-Hyperlink

VBA -UNC-PfadFAD-Hyperlink
02.08.2005 10:11:56
Michael
Guten morgen zusammen,
ich benötige für ein Makro den UNC-Pfad der aktuellen DAtei.
mit Name = ActiveWorkbook.FullName bekommen ich leider nur (zb.)
T:\mr_shaolin\test.xls heraus.
Damit kann ich aber leider nichts anfangen, den Outlook akzeptiert das nicht.
...heissen müsste es für das Laufwer T: "\\daten\freigaben\....."
für weitere Laufwerke wieder anders.
Jetzt habe ich mir gedacht, das geht vielleicht mit "Wenn Laufwerk T, dann "der T-Laufwerkstext"+"Restpfad", wenn Laufwerk K, dann
"der K-Laufwerkstext"+"Restpfad", wenn Laufwerk Q, dann
"der Q-Laufwerkstext"+"Restpfad", sonst Makro abbrechen"
Kann mir dabei einer helfen, bzw. gibt es wohl eine bessere Möglichkeit einen
UNC-PFAD-Hyperlink zu erstelen?
Vielen Dank für eure Bemühungen im voraus!
LG
micha

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
aber wie....
02.08.2005 11:01:53
Micha
Hi Bernd,
da hab ich ja gleich den richtigen Profi erwischet..., verbürgt für richtige Antworten :=)
...aber sag mir doch bitte (hätte bei VBA besser "Beginner" reingeschrieben)
wie ich die Funktion aufrufe, bzw. wie ich den Namen "schreiben" kann ...
wie hier... : "Name = ActiveWorkbook.FullName"
Vielen Dank
Michael
AW: aber wie....
02.08.2005 11:23:53
bst
Hi Micha,
Danke für die Blumen. Und, versuch's mal so.
Es wird - falls möglich - das Laufwerk 'übersetzt', der Pfad wird nur hinten ran kopiert.
HTH, Bernd
--
Option Explicit

Declare Function WNetGetConnection32 Lib "MPR.DLL" Alias _
   "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal _
   lpszRemoteName As String, lSize As Long) As Long


Function GetUNCPath(pathname As String) As String
   Dim UNCPath As String, lw As String, pfad As String
   
   GetUNCPath = pathname
   If Len(pathname) > 1 Then
      lw = Left(pathname, 2)
      If lw Like "[A-Za-z]:" Then
         pfad = Mid(pathname, 3)
         UNCPath = String(256, 0)
         If WNetGetConnection32(lw, UNCPath, 256) = 0 Then
            GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad
         End If
      End If
   End If
End Function

Sub Test()
   Dim pfad$
   pfad = "p:\testXYZ"
   Debug.Print GetUNCPath(pfad)
   pfad = "C:\testXYZ"
   Debug.Print GetUNCPath(pfad)
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:12:21
Micha
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:12:29
Micha
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:12:39
Micha
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:12:56
Micha
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:12:58
Micha
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
...ich bekomme das nicht hin
02.08.2005 13:13:31
Michael
Hi Bernd!
...es tut mir leid, ich bekomme es nicht hin, aber es funzt trotzdem,
da bin ich mir sicher! denn beim letzem Satz vor "End if"
"GetUNCPath = Left(UNCPath, InStr(1, UNCPath, Chr(0)) - 1) & pfad"
steht nach dem Debuggen bei GetUNCPath der richtige UNC-PFAD!!!!!!!!
so sieht mein Makro aus, könntest du das Ergebnis von GetUNCPath da bitte "einbauen"?
Vielen lieben Dank im Voraus!!!!!!!!!!!!
LG
Micha

Sub Verknüpfung_senden()
On Error Resume Next
Dim Name As String
Name = ActiveWorkbook.FullName
Dim App, Itm
Set App = CreateObject("Outlook.Application")
Set Itm = App.CreateItem(0)
With Itm
.Subject = Name 'xxx  hier muss das Ergebnis von GetUNCPath hin!!!!  xxx
.To = ""
.Body = "ich habe obige Datei als Verknüpfung angehängt     "
.Attachments.Add Name, 4, , "Link"
.Display
End With
Set App = Nothing
Set Itm = Nothing
End Sub

Anzeige
AW: ...ich bekomme das nicht hin
02.08.2005 13:36:03
bst
Hallo Micha,
Du brauchst die Funktion eigentlich nur auzurufen, also sowas:
.Subject = GetUNCPath( Name )
Du mußt eigentlich nur auf eines achten, die Funktion muß (wegen des declare) in ein
echtes Modul, nicht hinter eine Tabelle oder so.
Du solltest IMHO keinen "On Error Resume Next" benutzen, nimm besser sowas wie unten.
Übrigens, bei .Attachments.Add xyzName sollte es egal sein ob Du Name oder UNCName
benutzt, Outlook sollte hier selbständig einen UNC-Link daraus machen.
cu, Bernd
--
Option Explicit

Sub Verknüpfung_senden()
   Dim Name As String, UNCName As String
   Dim App As Object, Itm As Object
   
   On Error GoTo myERR
   Name = ActiveWorkbook.FullName
   UNCName = GetUNCPath(Name)
   
   Set App = CreateObject("Outlook.Application")
   Set Itm = App.CreateItem(0)
   With Itm
      .Subject = UNCName
      .To = ""
      .Body = "ich habe obige Datei als Verknüpfung angehängt "
      .Attachments.Add Name, 4, , "Link"
      .Display
   End With
   Set App = Nothing
   Set Itm = Nothing
   myERR:
   If Err.Number <> 0 Then MsgBox "Fehler " & Err.Number & " : " & Err.Description
End Sub

Anzeige
AW: ...ich bekomme das nicht hin
02.08.2005 14:23:38
Michael
Hi Bernd!
....irgendwo oben hatte ich ja schon geschrieben:
"BST ..eine Garantie für richtige Antworten"
......da habe ich mich nicht zuweit aus dem Fester gelehnt! Funzt alles bestens, perfekt!
...ich will dich ja nicht stressen, geht ja auch alles bestens...aber hast du schon mal was von einem SMTP-Server gehört. Da soll man mails direkt (auch per VBA) hinsenden können. Kannst du sowas auch? zb. mit meinem Makro? Ich persönlich kenne Herrn SMTP gar nicht, kann also auch nichts dazu tun :O)
879797987977 Dank
Gruss
Micha
AW: ...ich bekomme das nicht hin
02.08.2005 14:51:26
bst
Hi Micha,
Bitteschön oder eher Dankeschön ;-)
SMPT (Simple Mail Transfer Protocol) ist ein Protokoll wie auch HTTP oder FTP.
Siehe http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
Wenn Du denn wirklich wissen willst wie Du unter Windows sonst noch mailen kannst, schau Dir mal dieses an: http://www.msexchangefaq.de/code/wege.htm
Ist sich aber teilweise 'schon ziemlich heftig'...
Wenn es Dir nur darum geht beim Mailen Outlook 'zu überlisten' nimm vielleicht
ClickYes http://www.contextmagic.com/express-clickyes oder auch Redemption http://www.dimastr.com/redemption
Oder ganz einfach den Kommandozeilen-Mailer Blat http://www.blat.net
cu, Bernd
Anzeige
Threat beendet! Vielen Dank Bernd! o.T
02.08.2005 15:04:25
Micha
gruss
Micha

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige