|
|
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Нашел в форуме пример подстановки в программу имени файла,найденного через диалоговое окно с помощью API function. Конкретнее, нужно в команду DoCmd.TransferSpreadsheet acImport, 8, "ExelTable", имя файла, True, "" вместо конкретного имени файла подставлять имя, которое выбирается в данный момент. Следуя примеру, хотел использовать функцию, которая возвратит путь к файлу) : DoCmd.TransferSpreadsheet ..., ..., ...,OpenFile(...), ..., ... Но! 1.Не могу подключить библиотеку comdlg32.dll 2. в списке, после as, OpenFileName отсутствует и т.п. Более того, когда просто хотел создать диалоговое окно типа: Function Select_File(Field As String) Dim fd As FileDialog Dim s Set fd = Application.FileDialog(msoFileDialogFilePicker и т.д. То не смог выбрать после as FileDialog - нету его и все. References на Microsoft Office вроде как есть. использую Access 2000. HELP PLEASE! Ниже тот самый пример использования API : Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Boolean Declare Function GetSaveFileName Lib "comdlg32.dll" _ Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Boolean Public Function OpenFile(ByVal InitDir As String, ByVal FName As String, _ Optional ext As String = "mdb", _ Optional Title As String = "Открыть файл", _ Optional Flags As Long) As String Dim strFile As String * 512 Dim of As OPENFILENAME Dim f As String Dim p% ' Установка начальных значений структуры of.hwndOwner = Application.hWndAccessApp of.hInstance = 0 of.lpstrCustomFilter = 0 of.nMaxCustrFilter = 0 of.lpfnHook = 0 of.lpTemplateName = 0 of.lCustrData = 0 'Ниже вы можете изменить фильтры для поиска файлов of.lpstrFilter = "MS Access Database (*.mdb)" & Chr$(0) & "*.mdb" & Chr$(0) & _ "Add-ins (*.mda)" & Chr$(0) & "*.mda" & Chr$(0) & _ "MDE-Files (*.mde)" & Chr$(0) & "*.mde" & Chr$(0) & _ "Excel-Files (*.xls)" & Chr$(0) & "*.xls" & Chr$(0) & _ "Programs (*.exe)" & Chr$(0) & "*.exe" & Chr$(0) & _ "DAT-Files (*.dat)" & Chr$(0) & "*.dat" & Chr$(0) & _ "Image-Files (*.jpg)" & Chr$(0) & "*.jpg" & Chr$(0) & _ "All Files (*.*)" & Chr$(0) & "*.*" & Chr$(0) & Chr$(0) Select Case ext Case "xls" of.nFilterIndex = 4 Case "mda" of.nFilterIndex = 2 Case "mdb" of.nFilterIndex = 1 Case "mde" of.nFilterIndex = 1 Case "exe" of.nFilterIndex = 5 Case "dat" of.nFilterIndex = 6 Case "jpg" of.nFilterIndex = 7 Case Else of.nFilterIndex = 8 End Select of.lpstrFile = FName & String$(512 - Len(FName), 0) of.nMaxFile = 511 of.lpstrFileTitle = String$(512, 0) of.nMaxFileTitle = 511 of.lpstrTitle = Title of.lpstrInitialDir = InitDir of.lpstrDefExt = ext of.Flags = Flags 'OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST '+ OFN_EXPLORER of.lStructSize = Len(of) If GetOpenFileName(of) Then p% = InStr(1, of.lpstrFile, Chr$(0)) OpenFile = left(of.lpstrFile, p% - 1) Else OpenFile = "" End If End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:15 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
*А1: А у тебя акцесс какой? Если 97, то ок. Иначе тебе в прошлом топике сказали, как проще получить имя файлы. *ранен. *Б1: Функция выбора файла может возвратить и "", и Null (как написана), поэтому ее значение сперва желательно класть в переменную MyStr=OpenFile(...) if len(nz(MyStr,""))>0 then DoCmd.TransferSpreadsheet ..., ..., ...,MyStr, ..., ... else msgbox "ФИК ТЕБЕ!" endif *ранен. *Б3: Сделай поиск на форуме по "Getz" Найди функцию от уважаемых товарищей Гетц и Литвин. Ей можно подкладывать любые расширения, а не один из 8 вариантов. (опять же для 97) *убит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:22 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Не "Б3", а "В1" :))\r \r Вот она:\r /topic/46451 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:25 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
У меня 2000 Access какой пршлый топик ты имеешь ввиду? Про импорт? дык у меня проблема с FileDialog, который я не могу выбрать из предлагаемого , нетути его там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:36 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Тады Редактор ВБА/меню Tools/References... поставить галку возле Microsoft Office 10.0 (9.0) Object Library И усе будить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:41 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Да есть галка! На 9.0 Только вот с File... есть только FileSearch. И как это понимать? Может переустановить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:45 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
А не знаю. :( М.б. он только в 10 появился? А хелп по FileDialog выскакивает? (у меня 2000-го нету рядом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:50 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
на сколько я знаю именно в 10 он и появился. поставь десятку и наслаждайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:53 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
FileDialog появмлся в 2002 Акцесе только ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:55 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Не-а. Только по FileSearch и вские там хелпы по использованию Import/Insert File Dialog Box. так что, наверное, надо другой Office? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 12:58 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Тааак. Постойте. так что делать. Ставить другой Office или не ставить? Если нет, то что с подстановкой имени файла в команду в Access 2000 ? Как для 97 - не получится, (я правильно понял?) А как в 2002 (т.е. с FileDialog) -тоже нет. Тогда как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:01 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Получиться, как для 97. М. взять функцию из моей ссылки и разобраться с ней. Можешь всять свою, и разобраться с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:04 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
что за дурость тут творится? чем тебя апишный вариант не устроил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:04 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
...пришел лесник и всех разогнал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:08 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Да нравится он мне, только вот compile erorr can't find library : comdlg32.dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:21 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:43 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
мда ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:45 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
гм.. это у меня случайно слова закончились Где он у тебя на какую библиотеку ругается? Имя файла проверь. Или путь полный ему укажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 14:05 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Для вызова API функциий никаких дополнительных ссылок не нужно. Достаточно в заголовке модуля объявить [Private] Declare Function GetOpenFileName.... Затем ее можно использовать в процедурах этого (если Private), или других модулей. А Вы, вероятно, втулили эти Declare между процедурами. :) Приведенный выше пример должен нормально работать в А95-А2002 и других VB/VBA проектах. А метод FileDialog действительно появился только в А2002. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 15:16 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
всем спасибо за помощь и не ругайтесь - я же только учусь :-( Установил я 2002 , вызвал диалог (FileDialog). Ну а дальше-то как имя выбранного файла подставлять в DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "new", ИМЯФАЙЛА?, True, "" Что-то у меня не получается:-((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 16:32 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Да нравится он мне, только вот compile erorr can't find library : comdlg32.dll Д.б. в \windows\system32. Может, кто-нить скажет, почему его там может не быть? Установил я 2002. Хороший способ программировать. Тогда уж еще нажми F1 на FileDialog... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 17:05 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
Если ты установил 2002, то теперь это должно работать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 18:01 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
comdlg32.dll нада просто зарегистрировать и буджет диалог в 97 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 20:16 |
|
||
|
API и подстановка имени файла в Access
|
|||
|---|---|---|---|
|
#18+
>RVI Спасибо огромное! Все получилось. Я, дурья голова, подставлял vrtSelectedItem впрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 09:54 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32272757&tid=1679279]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 293ms |

| 0 / 0 |
