Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Mappval

Postades av 2002-06-20 10:38:31 - Michael Ziegler, i forum microsoft office, Tråden har 8 Kommentarer och lästs av 1274 personer

Någon som vet hur jag kan låta användaren välja en mapp i ett dialogfönster, har gjort detta i VB men minns inte syntaxen....

Mvh
Michael


Svara

Sv: Mappval

Postades av 2002-06-20 10:45:26 - Niklas Jansson

<code>
'---------------------------------------------------
' WinAPI Declarations
'---------------------------------------------------
Private Declare Sub CoTaskMemFree _
Lib "ole32.dll" ( _
ByVal hMem As Long _
)
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 Function GetActiveWindow _
Lib "user32" ( _
) As Long

'-------------------------------------------------
' User-Defined Types
'-------------------------------------------------
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

'-------------------------------------------------
' Module-level Constants
'-------------------------------------------------
'used for SHBrowseForFolder APIs
Const BIF_RETURNONLYFSDIRS = 1
Const MAX_PATH = 260

Function BrowseForFolder() As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo

With udtBI
.hwndOwner = GetActiveWindow&
.lpszTitle = "Choose a folder"
.ulFlags = BIF_RETURNONLYFSDIRS
End With

lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = _
SHGetPathFromIDList _
(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, _
vbNullChar)
If iNull Then _
sPath = Left$(sPath, iNull - 1)
End If
BrowseForFolder = sPath
End Function
</code>

Välj mapp med BrowseForFolder.

/Niklas Jansson


Svara

Sv: Mappval

Postades av 2002-06-20 10:51:04 - Michael Ziegler

Tack Niklas, du är en klippa!!!

/MiZ


Svara

Sv: Mappval

Postades av 2002-06-20 11:00:27 - Niklas Jansson

De e lungt, inte min kod...
/Niklas Jansson


Svara

Sv: Mappval

Postades av 2002-06-20 11:16:54 - Michael Ziegler

En följdfråga: Går det att initiera subben med en mapp att starta i?

/MiZ


Svara

Sv: Mappval

Postades av 2002-06-20 11:22:49 - Niklas Jansson

Kolla i udtBI. Kanske finns något där?

/Niklas Jansson


Svara

Sv: Mappval

Postades av 2002-06-20 11:24:21 - Michael Ziegler

Om jag fattar rätt skall pidlRoot initieras med ett ID för startmappen, frågan är nu bara hur jag får tag i den....

/MiZ


Svara

Sv: Mappval

Postades av 2002-12-29 05:57:11 - Raderat konto

Testade API:erna ovan utan att kunna initiera dialogrutans startmapp.

Med VBA-funktionen Application.GetOpenFilename kan dock hela problemet lösas i tre steg, i vart fall i Excel.

1. Ange startmapp genom att ändra aktiv mapp för Excel med ChDir.
2. Använd GetOpenFilename och låt användaren välja en mapp
3. Hämta sökvägen till den nyligen valda aktiva mappen med CurDir

Som exempel kan du sen skicka sökvägen till Shell-funktionen, om du vill öppna mappen.

<code>
' API-funktion som identifierar sökvägen till Utforskaren
Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Private Const SW_SHOWNORMAL = 1


Sub OpenMapp()
Dim Spath As String
Dim strBuffer As String
Dim intLen As Integer
strBuffer = String(256, 0)
intLen = GetWindowsDirectory(strBuffer, Len(strBuffer))
strBuffer = Left(strBuffer, intLen)
ChDir "sökväg" 'Byt ut sökväg mot korrekt sökvägsangivelse för startmapp
Application.GetOpenFilename "Mappar (*..*),*..*", , "Öppna mapp och klicka på Avbryt!", "Mapp"
Spath = CurDir
Shell strBuffer & Application.PathSeparator & "Explorer.exe" & " /e, " & Spath, 1
End Sub
</code>
Byt ut "sökväg" mot en korrekt sökväg tex "C:\Dokument". Eftersom aktiv mapp ändras kan det vara en god idé att skapa en variabel som lagrar aktiv mapps sökväg innan dialogrutan visas och återställa till densamma när koden körts klart. API-funktionen identifierar sökvägen till Utforskaren oberoende av Windows-version (>= Windows 95).

Jag vet inte vad användaren ska göra med sin mappsökväg. Här har jag bara som exempel antagit att vald mapp ska öppnas i ett Utforskar-fönster. Du kan göra något annat med Spath och i så fall i konsekvensens namn skippa Shell- och API-funktionen inklusive strBuffer och intLen, annars är det bara en kul grej, att öppna mappar direkt inifrån Excel.

Det opedagogiskt bakvända med denna metod för mappval är att det görs med knappen Avbryt men detta har å andra sidan angetts i namlistens text. För att ge användaren möjlighet att ångra åtgärden kan en meddelanderuta läggas in efter mappvalet och där be användaren bekräfta valet eller avbryta hela operationen.

Om Avbryt-knappen är oacceptabel för Mapp-val, använd API:erna som XL-Dennis refererar till med URL:erna i sitt inlägg nedan. Det innebär mer kod, dialogrutan har något sämre överblick över katalogstrukturen och såvitt jag kan se går det inte att skapa ny mappar att hänvisa till men å andra sidan ändras inte heller aktiv mapp och slutligen, och kanske viktigast, man väljer Mapp med OK-knappen, vilket torde vara i överenstämmelse med god programmeringssed.

mvh
Lars xl


Svara

Sv: Mappval

Postades av 2002-12-30 03:56:10 - Raderat konto

John Walkenbach:
http://j-walk.com/ss/excel/tips/tip29.htm
Jim Rech:
http://www.bmsltd.co.uk/MVP/Default.htm
Randy Birch:
http://www.mvps.org/vbnet/index.html?code/browse/browsefolders.htm


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 168
27 952
271 704
750
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies