Access-Paradies im Internet

Die AP-Entwickler-Tools 2007 für Access - 28 offene Entwicklertools für nur 199,- EUR - aber nur für kurze Zeit!
 

  

::: Funktionen

 


Die Top Seite für Excel-VBA-Makros uvm.
Anwenderforum für Microsoft Office, Windows, VB
FAQ, kostenlose Tipps und Downloads zu Microsoft Office
Das große Visual-Basic Archiv
Access-Garhammer
Rainer's Archiv

::: Newsletter

 

Unser Newsletter informiert Sie topaktuell rund um alle Themen zu Microsoft Access, VBA usw.

 
  




::: ebay

 
1.000 Tage eBay Partnerprogramm - Volume II
 

34

 
  Tipps & Tricks -> Dateisystem / Laufwerk -> Erweiterter Verzeichnisauswahldialog (Access 97)   



Kostenlose Tools und aktuelle News mit unserem monatlichen Access-Newsletter.
Jetzt eintragen!




Das Access-VBA Codebook

Neue Ausgabe!




Die VBA-Codesammlung, die bei keinem Entwickler
fehlen darf!



Mails senden, abrufen und decodieren - ganz easy ;-)

Das SMTP Control sendet, das POP3 Control empfängt und der Mail-Parser (Klassenobjekt) decodiert empfangene Mails im Handumdrehen - natürlich unter Berücksichtigung von Multi-Part MIME Nachrichten, Anlagen u.v.m.



von Günther Kramer

Erweiterter Verzeichnisdialog


Diese Funktion stellt den er-
weiterten Verzeichnisauswahl-
dialog zum Auswählen von Verzeichnissen zur Verfügung.

 
   
 
 
 
  Erweiterter Verzeichnisauswahldialog (Access 97)
Kurzinfo: Diese Funktion zeigt den Dialog für die Verzeichnisauswahl an und liefert den Pfad zurück
Access-Version(en): Access 97
Autor: Günther Kramer
Homepage: http://www.access-paradies.de
Download ca. 55 KB

 
 

 

Auf der AP-Access-Tools Vol.1 finden Sie weitere 320 Tipps & Tricks sowie 250 Access-Beispiel/Anwendungen mit offenen Quellcode!

Die Access-Tools-CD mit über 400 MByte Inhalt - für Access- und VB-Entwickler

  • 256 Access-Beispiele mit offenem Code
  • 45 Add-Ins und ActiveX-Komponenten (Freeware)
  • 16 VB-Projekt inkl. Source
  • 321 Tipps & Tricks für Access und VB
  • Plus 11 Entwicklerversionen (9 davon mit Source!)
  • Plus 3 Vollversionen und
  • Plus riesiger Datenpool

    Holen Sie sich jetzt Ihre AP-Access-Tools-CD zum Superpreis von nur EUR 24,95!

  •  
     

    Achtung:
    Der nachfolgende Tipp ist nur für die Version Microsoft Access 97. Für die Versionen ab Access 2000 gibt es einen anderen VBA-Code. Das Beispiel und den Tipp für Access 2000 bzw. höher finden Sie ebenfalls in unserem Tipp-Archiv.


    Mit dieser Funktion stellen Sie einen Auswahldialog zur Verfügung, mit dessen Hilfe der Anwender ein gewünschtes Verzeichnis auswählen kann. Der Verzeichnispfad wird als String an die Funktion zurückgegeben.
    Die besonderheit bei diesem Beispiel ist, dass man hier auch ein Startverzeichnis angeben kann.

    Erstellen Sie ein neues Modul und fügen Sie nachfolgenden Code ein:

    Option Compare Database
    Option Explicit
     
    Private Type BROWSEINFO
        hOwner          As Long
        pidlRoot        As Long
        pszDisplayName  As String
        lpszTitle       As String
        ulFlags         As Long
        lpfn            As Long
        lParam          As Long
        iImage          As Long
    End Type
     
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                "SHGetPathFromIDListA" (ByVal pidl As Long, _
                ByVal pszPath As String) As Long
     
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                As Long
     
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
                (ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) _
                As Long
     
    Private Const BIF_RETURNONLYFSDIRS = &H1
    Private Const BFFM_SETSELECTION = &H466
    Private Const BFFM_INITIALIZED = 1
     
    Global StartDir As String
     
    Public Function VerzeichnisSuchen(szDialogTitle As String, _
                    StartVerzeichnis As String) As String
     
      Dim X         As Long
      Dim bi        As BROWSEINFO
      Dim dwIList   As Long
      Dim szPath    As String
      Dim wPos      As Integer
     
      StartDir = StartVerzeichnis
     
      With bi
            .hOwner = hWndAccessApp
            .lpszTitle = szDialogTitle
            .ulFlags = BIF_RETURNONLYFSDIRS
            .lpfn = DummyFunc(AddrOf("BrowseCallbackProc"))
        End With
     
        dwIList = SHBrowseForFolder(bi)
        szPath = Space$(512)
        X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
     
        If X Then
            wPos = InStr(szPath, Chr(0))
            VerzeichnisSuchen = Left$(szPath, wPos - 1)
        Else
            VerzeichnisSuchen = ""
        End If
    End Function
    Public Function BrowseCallbackProc(ByVal hWnd As Long, ByVal uMsg As Long, _
                    ByVal lParam As Long, ByVal lpData As Long) As Long
     
        Dim pathstring  As String
        Dim retval      As Long
     
        Select Case uMsg
            Case BFFM_INITIALIZED
                pathstring = StartDir '"C:\Temp"
                retval = SendMessage(hWnd, BFFM_SETSELECTION, _
                         ByVal CLng(1), ByVal pathstring)
        End Select
     
        BrowseCallbackProc = 0
     
    End Function
    Public Function DummyFunc(ByVal param As Long) As Long
     
        DummyFunc = param
     
    End Function
    
    Da Access 97 die Funktion AddressOf nicht kennt, müssen Sie nur für die Access 97-Version ein zweites Modul erstellen. Kopieren Sie die folgenden Codezeilen in das neue Modul.
    Option Compare Database
    Option Explicit
     
    Private Declare Function GetCurrentVbaProject Lib "vba332.dll" Alias _
    "EbGetExecutingProj" (hProject As Long) As Long
     
    Private Declare Function GetFuncID Lib "vba332.dll" Alias "TipGetFunctionId" _
    (ByVal hProject As Long, ByVal strFunctionName As String, ByRef _
    strFunctionId As String) As Long
     
    Private Declare Function GetAddr Lib "vba332.dll" Alias _
    "TipGetLpfnOfFunctionId" (ByVal hProject As Long, ByVal strFunctionId As _
    String, ByRef lpfn As Long) As Long
     
    Public Function AddrOf(strFuncName As String) As Long
    Dim hProject As Long
    Dim lngResult As Long
    Dim strID As String
    Dim lpfn As Long
    Dim strFuncNameUnicode As String
     
    Const NO_ERROR = 0
     
    ' The function name must be in Unicode, so convert it.
    strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
     
    ' Get the current VBA project
    ' The results of GetCurrentVBAProject seemed inconsistent, in our tests,
    ' so now we just check the project handle when the function returns.
    Call GetCurrentVbaProject(hProject)
     
    ' Make sure we got a project handle... we always should, but you never know!
    If hProject <> 0 Then
        ' Get the VBA function ID (whatever that is!)
        lngResult = GetFuncID(hProject, strFuncNameUnicode, strID)
     
        ' We have to check this because we GPF if we try to get a function pointer
        ' of a non-existent function.
        If lngResult = NO_ERROR Then
            ' Get the function pointer.
            lngResult = GetAddr(hProject, strID, lpfn)
     
            If lngResult = NO_ERROR Then
                AddrOf = lpfn
            End If
        End If
    End If
     
    End Function
     
    
    Um den Dialog aufzurufen und das Ergebnis einem Feld innerhalb des Formulars zurückzugeben erstellen Sie bitte eine Schaltfläche mit dem Namen Verzeichnisauswahl. Der im Beispiel verwendete Namen für das Feld, in welches der Verzeichnispfad zurückgeschrieben wird, lautet Verzeichnis. Beide Namen (Schaltfläche & Feld) können Sie natürlich anders benennen.
    Private Sub Verzeichnisauswahl_Click()
     
        Dim strVerzeichnisName As String
     
        If IsNull(Me!Verzeichnis) Then
            Me!Verzeichnis = ""
        End If
     
        strVerzeichnisName = VerzeichnisSuchen _
            ("Wählen Sie bitte das Verzeichnis aus!", Me!Verzeichnis)
     
        If ((Not IsNull(strVerzeichnisName)) And (strVerzeichnisName <> "")) Then
            Me!Verzeichnis = strVerzeichnisName
        End If
     
    End Sub
    


    Neuen Tipp melden Neuen Download melden

    Copyright 2000-2003 Microsys Kramer– Alle Rechte vorbehalten - Der Download von Tipps und Programmen von den Seiten www.access-paradies.de erfolgt auf eigene Gefahr. Microsys Kramer haftet nicht für Schäden, die aus der Installation oder der Nutzung von Tipps oder Software aus dem Download-Bereich erfolgen. Trotz aktueller Virenprüfung ist eine Haftung für Schäden und Beeinträchtigungen durch Computerviren ausgeschlossen. Schadenersatzansprüche, aus welchem Rechtsgrund auch immer, sind ausgeschlossen, wenn Microsys Kramer nicht Vorsatz oder grobe Fahrlässigkeit zu vertreten hat. Dies gilt auch für Ansprüche auf Ersatz von Folgeschäden wie Datenverlust.

     
     
     
     

    Access-Paradies © 1996-2011 Microsys Kramer


    Microsoft, Access, Word, Excel, Outlook, Outlook Express, Visual Basic und Windows sind eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Weiterempfehlung  |   Linken Sie uns  |   Impressum  |   Newsletter  |   Onlineshop