sdku |
---|
guest_rusimport, Свойство о котором Вы говорите определяет вид-список или таблица. Короче бросаю эту затею. Огромное спасибо за отклик |
В 2003-м то, о чем вы говорите, тоже есть, но выглядит по другому, и за предварительный просмотр отвечает как раз
.InitialView = msoFileDialogViewPreview (ниже прилагаю скрин)
Проверил в 2003-м такой код (никаких ошибок при двойном клике мышкой на файле не обнаружил :( )
Option Compare Database
Option Explicit
Private Declare Function SHGetFolderPath Lib "shell32" _
Alias "SHGetFolderPathA" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
ByVal hToken As Long, ByVal dwFlags As Long, _
ByVal pszPath As String) As Long
Private Declare Function GetTempPath Lib "kernel32" _
Alias "GetTempPathA" _
(ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
'More Commonly used CSIDL values.
'For the full list, search MSDN for "CSIDL Values"
Private Const CSIDL_PROGRAMS As Long = &H2
Private Const CSIDL_PERSONAL As Long = &H5
Private Const CSIDL_FAVORITES As Long = &H6
Private Const CSIDL_STARTMENU As Long = &HB
Private Const CSIDL_MYDOCUMENTS As Long = &HC
Private Const CSIDL_MYMUSIC As Long = &HD
Private Const CSIDL_MYVIDEO As Long = &HE
Private Const CSIDL_DESKTOPDIRECTORY As Long = &H10
Private Const CSIDL_APPDATA As Long = &H1A
Private Const CSIDL_LOCAL_APPDATA As Long = &H1C
Private Const CSIDL_INTERNET_CACHE As Long = &H20
Private Const CSIDL_WINDOWS As Long = &H24
Private Const CSIDL_SYSTEM As Long = &H25
Private Const CSIDL_PROGRAM_FILES As Long = &H26
Private Const CSIDL_MYPICTURES As Long = &H27
'Constants used in the SHGetFolderPath call
Private Const CSIDL_FLAG_CREATE As Long = &H8000&
Private Const SHGFP_TYPE_CURRENT = 0
Private Const SHGFP_TYPE_DEFAULT = 1
Private Const MAX_PATH = 260
'Public enumeration to give friendly names for the CSIDL values
Public Enum SpecialFolderIDs
sfAppDataRoaming = CSIDL_APPDATA
sfAppDataNonRoaming = CSIDL_LOCAL_APPDATA
sfStartMenu = CSIDL_STARTMENU
sfStartMenuPrograms = CSIDL_PROGRAMS
sfMyDocuments = CSIDL_PERSONAL
sfMyMusic = CSIDL_MYMUSIC
sfMyPictures = CSIDL_MYPICTURES
sfMyVideo = CSIDL_MYVIDEO
sfFavorites = CSIDL_FAVORITES
sfDesktopDir = CSIDL_DESKTOPDIRECTORY
sfInternetCache = CSIDL_INTERNET_CACHE
sfWindows = CSIDL_WINDOWS
sfWindowsSystem = CSIDL_SYSTEM
sfProgramFiles = CSIDL_PROGRAM_FILES
'There is no CSIDL for the temp path,
'so we need to give it a dummy value
'and treat it differently in the function
sfTemporary = &HFF
End Enum
'Get the path for a Windows special folder
Public Function SpecialFolderPath( _
ByVal uFolderID As SpecialFolderIDs) As String
'Create a buffer of the correct size
Dim sBuffer As String * MAX_PATH
Dim lResult As Long
If uFolderID = sfTemporary Then
'Use GetTempPath for the temporary path
lResult = GetTempPath(MAX_PATH, sBuffer)
'The GetTempPath call returns the length and a
'trailing \ which we remove for consistency
SpecialFolderPath = Left$(sBuffer, lResult - 1)
Else
'Call the function, passing the buffer
lResult = SHGetFolderPath(0, _
uFolderID + CSIDL_FLAG_CREATE, 0, _
SHGFP_TYPE_CURRENT, sBuffer)
'The SHGetFolderPath function doesn't give us a
'length, so look for the first vbNullChar
SpecialFolderPath = Left$(sBuffer, _
InStr(sBuffer, vbNullChar) - 1)
End If
End Function
Sub TestFileDialog()
Dim sf As String
Dim p As String
sf = SpecialFolderPath(sfMyDocuments)
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = sf
.InitialView = msoFileDialogViewPreview
.Show
p = .SelectedItems(1)
Application.FollowHyperlink p
End With
End Sub