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

Hyperlink

Hyperlink
18.06.2003 08:36:43
M. Bacher
Hallo zusammen...
ich lege gerade eine Excel-Datentabelle an. Auf Tabellenblatt 1 gibt es nur einen Button, der ein Eingabeformular öffnet. Diese eingegebenen Daten werden dann auf die nächste leere Zeile des Tabellenblattes 2 übertragen (das funzt auch genau so wie es soll) und bilden einen Datensatz zu dem es jeweils eine Word oder PP-Datei irgendwo auf unserem Server gibt.
Nun möchte ich auch über das Formular von Tabelle 1 einen Link zu der dazugehörigen Word-oder PP-Datei suchen und in Tabelle 2 in die richtige Zeile und Spalte einfügen. Das Formular habe ich schon soweit, das sich über einen Button die allseits bekannte DateiSuchmaske öffnetund eine Datei gesucht werden kann. Das Problem ist aber, die Übergabe des gesuchten Pfades in die Tabelle zu realisieren.
Ich habe schon eine kleine Excel-Beispieldatei wo über ein Formular 3 Gif-bilder gesucht und deren Links in die Zellen A1-A3 übertragen werden. Da komme ich aber irgendwie nicht klar, das auf mein Problem zu übertragen...
Wer kann helfen...????

Mfg Mario





5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Hyperlink
18.06.2003 10:46:37
IVAN

hi
also ich habe einen mp3 reader gebastelt der mir die files
aus einem x-beliebigen verzeichniss,in die tabelle mit
der hyperlinkverknüpfung anlegt.das mUß dann dann auch mit
doc oder txt datein funken.versuch es vieleicht hilf dir das.

1.ersten code in ein modul eingeben
2.den 2code darunter in ein seperates modul oder in eine userform.

Private Declare Function SHBrowseForFolder Lib "shell32" _
(lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SHSimpleIDListFromPath Lib "shell32" Alias "#162" _
(ByVal szPath As String) As Long
Private Const BIF_RETURNONLYFSDIRS As Long = 1
Private Const BIF_DONTGOBELOWDOMAIN As Long = 2
Private Const BFFM_INITIALIZED As Long = 1
Private Const MAX_PATH As Long = 260
Private Const WM_USER As Long = &H400
Private Const BFFM_SETSTATUSTEXTA As Long = (WM_USER + 100)
Private Const BFFM_SETSELECTIONA As Long = (WM_USER + 102)
Private Const BFFM_SETSELECTIONW As Long = (WM_USER + 103)
Private Const BFFM_SETSTATUSTEXTW As Long = (WM_USER + 104)
Private Type BROWSEINFO
hwndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

' Callback für die Browse-Directory-Methode - "pidList"-Methode
' zur Verwendung in der BrowseDirectory()-Funktion
Private Function BrowseCallBackProc(ByVal hWnd As Long, _
ByVal uMsg As Long, ByVal lParam As Long, _
ByVal lpData As Long) As Long
'Voreinstellung des Verzeichnisses im Verzeichnis-
'Dialog unter Verwendung des Parameters "pidList"
Select Case uMsg
Case BFFM_INITIALIZED
Call SendMessage(hWnd, BFFM_SETSELECTIONA, False, ByVal lpData)
Case Else
End Select
End Function

' Dummy-Methode, um den Inhalt des AddressOf-Operators zu erhalten und
' zur Verwendung in der BrowseDirectory()-Funktion zurückzugeben
Private Function FARPROC(pfn As Long) As Long
'Einstellen und Erhalten der Adresse für ein Callback. Das ist notwendig,
'weil man "AddressOf" nicht direkt einem benutzerdefinierten Typ zuweisen
'kann. Man kann es aber einer anderen Variablen vom Typ "Long" zuweisen,
'der - wie hier auch von der Function zurückgegeben - weiter verwendet
'werden kann.
FARPROC = pfn
End Function

' "pidList"-Parameter für den vorgegebenen Pfad wird durch den Aufruf
' der undokumenteierten API-Funktion #162 zurückgegeben.
Private Function GetPIDLFromPath(ByVal sPath As String) As Long
'If IsWinNT Then
GetPIDLFromPath = SHSimpleIDListFromPath(StrConv(sPath, vbUnicode))
'Else
' GetPIDLFromPath = SHSimpleIDListFromPath(sPath)
'End If
End Function

Public Function BrowseDirectory(Optional ByVal strInitialDir As String, Optional ByVal _
hWnd As Long) As String
Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BROWSEINFO
szTitle = "Please select a directory"
With tBrowseInfo
.hwndOwner = hWnd
.pidlRoot = 0
.lpszTitle = szTitle
' .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
.lpfnCallback = FARPROC(AddressOf BrowseCallBackProc)
.lParam = GetPIDLFromPath(strInitialDir)
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
BrowseDirectory = sBuffer
' Ressourcen freigeben
CoTaskMemFree lpIDList
Else
BrowseDirectory = strInitialDir
End If
' Ressourcen freigeben
CoTaskMemFree tBrowseInfo.lParam
End Function

'das auch noch ins 1 modul
Sub OrdnerAuswahl()
Dim strInitialDir As String, strPath As String

strPath = BrowseDirectory()
'Verzeichnisdialog mit Voreinstellung anzeigen
' strInitialDir = "C:\Daten"
' strPath = BrowseDirectory(strInitialDir)

End Sub
:::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::
2.modul oder in eine userform


Private Sub Einlesen_Click()

Application.ScreenUpdating = False

Dim strInitialDir As String, strPath As String
Dim sFile As String, sPattern As String, sPath As String
Dim iRow As Integer
Columns(1).ClearContents

sPath = BrowseDirectory()
If sPath = "" Then Exit Sub

'einlesen
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
sPattern = "*.mp3"'hier den typ ändern zb doc txt unsw.
sFile = Dir(sPath & sPattern)
Do Until sFile = ""
iRow = iRow + 1
ActiveSheet.Hyperlinks.Add Anchor:=Cells(iRow, 1), _
Address:=sPath & sFile, TextToDisplay:=sFile
sFile = Dir()
Loop
Application.ScreenUpdating = True
End Sub

bei fragen schreib mir zurück.

viel spass
ivan


Anzeige
Re: Hyperlink
18.06.2003 10:52:51
M. Bacher

Hallo Ivan,

puh... das ist ja heftig! Ich werde mich mal damit auseinandersetzen... :-)))
Bin jetzt nicht soo der Programmierer aber vielleicht klappts ja!
Aber auf alle Fälle erst mal vielen Dank für Deinen Tip und wenn ich nicht weiterkomme melde ich mich wieder...

Mfg Mario

Re: Hyperlink
18.06.2003 11:31:54
IVAN

hi
sieht nur komplizeirt aus ist aber ganz eifach!
WICHTIG IST NUR DAS DU 2 VERSCHIEDENE MODULE MACHST!
und die endung *.mp3 eventuel auch *.* eingibist.aber dann listet er dir alles was in diesem verzeichniss ist.besser wenn du
direkt *.doc oder *.txt je nach dem was du halt brauchst.
ivan

Anzeige
Re: Hyperlink
18.06.2003 13:02:14
M. Bacher

Hi, Ivan
habe jetzt in ein leeres Tabellenblatt ein Commandbutton gesetzt.
Habe 2 Module eingefügt und die Anweisung aus Deiner Antwort rüberkopiert.
Im Modul 1 in der "Public Function BrowseDirectory..." gibts 2 zeilen: (Zeilen 10+11):

'.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
.lpfnCallback = FARPROC(AddressOfBrowseCallBackProc)

hier meckert VBA rum. Wenn ich an die zweite Zeile ebenso ein Hochkomma setze meckert er nicht mehr.
Dem Commandbutton habe ich das Makro"OrdnerAuswahl" zugewiesen. Damit geht die Suchmaske für den Ordner auf.
Wenn ich dann einen Ordner ausgewählt habe und mit OK bestätige, passiert irgendwie nix.... :-(

Ich muss auch dazusagen, das in den Ordnern man keine einzelne Datei anwählen kann.
Ich habe eine kleine Excel-Datei mit so einer Funktion... Die schicke ich Dir mal auf Deine email.
Guckst Dir die mal an, denn eigentlich soll es vom Prinzip her genau so gehen...(naja fast :-))...ich begreife nur nicht ganz die Anweisungen

Mfg Mario


Anzeige
Re: Hyperlink
18.06.2003 14:03:33
IVAN

hi
die arbeitsmappe sollte bei dir sein!
SIE WURDE GETESTET VON MIR!
falls es bei dir nicht funkt dann liegt es an deiner excel version.
ivan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige