28. juni 2004 - 15:37Der er
9 kommentarer og 1 løsning
valg af fil sti, i min form.
Det skal være muligt at vælge en fil via min form. Altså en filebrowser. Hvordan indsætter jeg sådan en i min form? eller finder sådan en? Den skal entligt bare levere stien til den fil brugeren angiver..
Prøv dette - i første omgang skal du ikke tænke over koden. Der findes også andre måder men denne er en af de bedste ;o)
Tilføj et nyt modul i dit projekt
åbn modulet og indsæt nedenstående kode i dit modul
'indsættes start ' Browse For Folder API's Option Explicit Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
'BROWSEINFO.ulFlags values: Public Const BIF_RETURNONLYFSDIRS = &H1 'Only file system directories Public Const BIF_DONTGOBELOWDOMAIN = &H2 'No network folders below domain level Public Const BIF_STATUSTEXT = &H4 'Includes status area in the dialog (for callback) Public Const BIF_RETURNFSANCESTORS = &H8 'Only returns file system ancestors Public Const BIF_EDITBOX = &H10 'Allows user to rename selection Public Const BIF_VALIDATE = &H20 'Insist on valid edit box result (or CANCEL) Public Const BIF_USENEWUI = &H40 'Version 5.0. Use the new user-interface. 'Setting this flag provides the user with 'a larger dialog box that can be resized. 'It has several new capabilities including: 'dialog box, reordering, context menus, new 'folders, drag and drop capability within 'the delete, and other context menu commands. 'To use you must call OleInitialize or 'CoInitialize before calling SHBrowseForFolder. Public Const BIF_BROWSEFORCOMPUTER = &H1000 'Only returns computers. Public Const BIF_BROWSEFORPRINTER = &H2000 'Only returns printers. Public Const BIF_BROWSEINCLUDEFILES = &H4000 'Browse for everything Public Const MAX_PATH = 260
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 Type SHITEMID cb As Long abID As Byte End Type
Private Type ITEMIDLIST mkid As SHITEMID End Type
' Open File Dialog API Private Const OFN_ALLOWMULTISELECT As Long = &H200 Private Const OFN_CREATEPROMPT As Long = &H2000 Private Const OFN_ENABLEHOOK As Long = &H20 Private Const OFN_ENABLETEMPLATE As Long = &H40 Private Const OFN_ENABLETEMPLATEHANDLE As Long = &H80 Private Const OFN_EXPLORER As Long = &H80000 Private Const OFN_EXTENSIONDIFFERENT As Long = &H400 Private Const OFN_FILEMUSTEXIST As Long = &H1000 Private Const OFN_HIDEREADONLY As Long = &H4 Private Const OFN_LONGNAMES As Long = &H200000 Private Const OFN_NOCHANGEDIR As Long = &H8 Private Const OFN_NODEREFERENCELINKS As Long = &H100000 Private Const OFN_NOLONGNAMES As Long = &H40000 Private Const OFN_NONETWORKBUTTON As Long = &H20000 Private Const OFN_NOREADONLYRETURN As Long = &H8000 Private Const OFN_NOTESTFILECREATE As Long = &H10000 Private Const OFN_NOVALIDATE As Long = &H100 Private Const OFN_OVERWRITEPROMPT As Long = &H2 Private Const OFN_PATHMUSTEXIST As Long = &H800 Private Const OFN_READONLY As Long = &H1 Private Const OFN_SHAREAWARE As Long = &H4000 Private Const OFN_SHAREFALLTHROUGH As Long = 2 Private Const OFN_SHAREWARN As Long = 0 Private Const OFN_SHARENOWARN As Long = 1 Private Const OFN_SHOWHELP As Long = &H10 Private Const OFS_MAXPATHNAME As Long = 128
Private Const OFS_FILE_OPEN_FLAGS As Long = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_CREATEPROMPT Or OFN_NODEREFERENCELINKS Private Const OFS_FILE_SAVE_FLAGS As Long = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_OVERWRITEPROMPT Or OFN_HIDEREADONLY
Private Type OPENFILENAME nStructSize As Long hwndOwner As Long hInstance As Long sFilter As String sCustomFilter As String nCustFilterSize As Long nFilterIndex As Long sFile As String nFileSize As Long sFileTitle As String nTitleSize As Long sInitDir As String sDlgTitle As String flags As Long nFileOffset As Integer nFileExt As Integer sDefFileExt As String nCustDataSize As Long fnHook As Long sTemplateName As String End Type
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long
Function GetBrowseDirectory(Owner As Form, Caption As String, Optional IncludeFiles As Boolean = False) As String
' This function will show the BrowseForFolder ' dialog. This can be used to select a folder ' that exists on the current system. ' Will return a string containing the selected ' folder or an empty string if cancel is ' selected.
Dim bi As BROWSEINFO Dim IDL As ITEMIDLIST Dim r As Long Dim pidl As Long Dim tmpPath As String Dim pos As Integer
With bi .hOwner = Owner.hWnd .pidlRoot = 0& .lpszTitle = Caption If IncludeFiles Then .ulFlags = BIF_BROWSEINCLUDEFILES Else .ulFlags = BIF_RETURNONLYFSDIRS + BIF_USENEWUI End If End With
If r Then pos = InStr(tmpPath, Chr$(0)) tmpPath = Left$(tmpPath, pos - 1) If Right$(tmpPath, 1) <> "\" And IncludeFiles = False Then tmpPath = tmpPath & "\" End If GetBrowseDirectory = tmpPath Else GetBrowseDirectory = "" End If
Jeg har ikke rigtig held med ovenstående script.. Tænker at det muligvis er grundet at jeg måske ikke har forklare helt hvilket program j sider i.. så deg gør jeg her.. Jeg sider i Microsoft Visual Basic 6.0 som jeg starter via min skabelon i word.. Ved ik om det gør forskel?
>> VBCORDER, jeg har tilføjet dit modul, men intet sker der.. skal der ikke være en referance til modulet i de andre koder?
Jeg har også forsøgt mig med: Application.FileDialog(FileDialogType:=msoFileDialogOpen).Filters.Add _ Description:="Word Documents (*.doc)", _ Extensions:="*.doc" Men den skriver at den ikke kender: FileDialog
jeg har ikke den store erfaring i vba selvom sproget er det samme.
Der er mange officespecifikke ting og vba er i den danske officepakke på dansk og det gøre det ikke nemmere for mig der tænker på engelsk når jeg programmerer.
Ingen brugbare svar da jeg koder vb til word.. De angivet koder kan kun benyttes i rigtig vb.. og vb .net
Lukker
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.