Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка вызова API, в чем дело?
 
 автор: ???????   (30.11.-1 в 00:00)
 
 

С помощью API-вызова пытаюсь сделать макрос в Access на формирование окна открытия файла. Появляется ошибка "Cant find DLL entry point OpenFile in comdlg32.dll".
Подскажите в чем может быть причина?
Библиотека на своем месте.
P.S. Или подскажите как можно стелать диалоговое окно в Access для открытия файла и для выбора пути?

  Ответить  
 
 автор: osmor   (30.11.-1 в 00:00)
 
 

код покажите. http://hiprog.com/access/article.asp?id=460
вопрос 22

  Ответить  
 
 автор: ???????   (30.11.-1 в 00:00)
 
 

Re: код покажите. Стоит Office 2003 prof
Код:

Private Declare Function ap_GetOpenFileName Lib "comdlg32.dll" _
Alias "OpenFile" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Const cdlOFNAllowMultiselect = &H200
Const cdlOFNCreatePrompt = &H2000
Const cdlOFNExplorer = &H80000
Const cdlOFNExtensionDifferent = &H400
Const cdlOFNFileMustExist = &H1000
Const cdlOFNHelpButton = &H10
Const cdlOFNHideReadOnly = &H4
Const cdlOFNLongNames = &H200000
Const cdlOFNNoChangeDir = &H8
Const cdlOFNNoDereferenceLinks = &H100000
Const cdlOFNNoLongNames = &H40000
Const cdlOFNNoReadOnlyReturn = &H8000
Const cdlOFNNoValidate = &H100
Const cdlOFNOverwritePrompt = &H2
Const cdlOFNPathMustExist = &H800
Const cdlOFNReadOnly = &H1
Const cdlOFNShareAware = &H4000

Public Function ap_OpenFile(Optional ByVal strFileNameIn _
As String = "", Optional strDialogTitle _
As String = "Name of File to Open")

Dim lngReturn As Long
Dim intLocNull As Integer
Dim strTemp As String
Dim ofnFileInfo As OPENFILENAME
Dim strInitialDir As String
Dim strFileName As String

If InStr(strFileNameIn, "") <> 0 Then
strInitialDir = Left(strFileNameIn, InStrRev(strFileNameIn, ""))
strFileName = Left(Mid$(strFileNameIn, InStrRev(strFileNameIn, "") + 1) & String(256, 0), 256)
Else
strInitialDir = CurrentProject.Path
strFileName = Left(strFileNameIn & String(256, 0), 256)
End If

With ofnFileInfo
.lStructSize = Len(ofnFileInfo)
.lpstrFile = strFileName
.lpstrFileTitle = String(256, 0)
.lpstrInitialDir = strInitialDir
.hwndOwner = Application.hWndAccessApp
.lpstrFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0)
.nFilterIndex = 1
.nMaxFile = Len(strFileName)
.nMaxFileTitle = ofnFileInfo.nMaxFile
.lpstrTitle = strDialogTitle
.flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly Or cdlOFNNoChangeDir
.hInstance = 0
.lpstrCustomFilter = String(255, 0)
.nMaxCustFilter = 255
.lpfnHook = 0
End With

lngReturn = ap_GetOpenFileName(ofnFileInfo)
If lngReturn = 0 Then
strTemp = ""
Else
strTemp = Trim(ofnFileInfo.lpstrFile)
intLocNull = InStr(strTemp, Chr(0))
If intLocNull Then
strTemp = Left(strTemp, intLocNull - 1)
End If
End If

ap_OpenFile = strTemp

End Function

  Ответить  
 
 автор: osmor   (30.11.-1 в 00:00)
 
 

Замените декларирование на... Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (ofn As OPENFILENAME) As Boolean

  Ответить  
 
 автор: ???????   (30.11.-1 в 00:00)
 
 

Re: Замените декларирование на... Спасибо за ответ. Поробую сделать, а пока нашел решение http://am.rusimport.ru/MSAccess/topic.aspx?ID=143 (длинное-е-е)
Теперь разбираюсь где, что. Т.к. мне надо еще вытаскивать путь к файлу.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList