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

Relative Pfade in absolute ändern (Hyperlink)

Relative Pfade in absolute ändern (Hyperlink)
05.08.2003 09:05:11
Jochen
Guten Morgen!

Ich habe eine Tabelle mit ca. 900 Hyperlinks, deren relative Pfade ich in absolute Pfade ändern möchte.

Wie kann ich dies möglichst schnell erledigen?


Vielen Dank im Voraus!

Gruß

Jochen

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Relative Pfade in absolute ändern (Hyperlink)
05.08.2003 10:05:58
Ivan
hi Jochen

da hast du pech das muß im prinzip manuell geändert werden.
oder
die hyperlinks neu einlesen mit vba
dazu bedarf es eines längeren codes
den ich dir bei interesse gerne poste!

gruss
ivan


AW: Relative Pfade in absolute ändern (Hyperlink)
05.08.2003 10:28:36
Jochen
Hallo Ivan,

danke für Deine Antwort!

Das Makro würde ich mir mal gerne ansehen!
Wie liest das Makro die Hyperlinks neu ein?
Muss ich einen Pfad angeben, wo es die Dateien einliest?

Danke und Gruß

Jochen


AW: Relative Pfade in absolute ändern (Hyperlink)
05.08.2003 11:17:54
Ivan


hi Jochen
alt+f11 Taten drücken
erstelle 1 modul
und kopiere modul1(untenstehender code) hinein

dann kopiere code1 in die tabelle1

wechsel zu excel
lege in deine tabelle1 einen commandbutton1 an

''########################################################
'code1:
Option Explicit

'Verzeichniss einlesen als Hyperlink
Private Sub CommandButton1_Click()
  
    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 = "*.*"
    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
End Sub

'##########################################################
'MODUL1
Option Explicit
Private Declare Function SHBrowseForFolder Lib "shell32" _
    (lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" _
    (ByVal pidList As LongByVal lpBuffer As StringAs Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As LongByVal wMsg As LongByVal wParam As Long, _
     lParam As Any) As Long
Private Declare Function SHSimpleIDListFromPath Lib "shell32" Alias "#162" _
    (ByVal szPath As StringAs 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 LongByVal lParam As Long, _
        ByVal lpData As LongAs Long
    'Voreinstellung des Verzeichnisses im Verzeichnis-
    'Dialog unter Verwendung des Parameters "pidList"
    Select Case uMsg
    Case BFFM_INITIALIZED
        Call SendMessage(hWnd, BFFM_SETSELECTIONA, FalseByVal 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 LongAs 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 StringAs Long
    'If IsWinNT Then
        GetPIDLFromPath = SHSimpleIDListFromPath(StrConv(sPath, vbUnicode))
    'Else
    '    GetPIDLFromPath = SHSimpleIDListFromPath(sPath)
    'End If
End Function

Public Function BrowseDirectory(Optional ByVal strInitialDir As StringOptional ByVal _
        hWnd As LongAs 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

Sub OrdnerAuswahl()
    Dim strInitialDir As String, strPath As String
    

    strPath = BrowseDirectory()
    
End Sub

gruss
ivan


Anzeige

25 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige