форма VB + макрос Access

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

форма VB + макрос Access

Сообщение НиколайП » 07.02.2006 (Вт) 16:06

Программа работает с БД Access, во время работы необходимо обрабатывать файлы Excel и вносить данные в БД.
В Access у меня установлен макрос:

ОткрытьТаблицу
имя таблицы:privoz
режим:Таблица
режим данных:Изменение

ВыполнитьКоманду
команда:ВыделитьВсеЗаписи

ВыполнитьКоманду
команда:Удалить

Сохранить
тип объекта:Таблица
имя объекта:privoz

ВыполнитьКоманду
команда:Сохранить

ПреобразоватьЭлектроннуюТаблицу
тип преобразования:Импорт
тип электронной таблицы:Microsoft Excel 8-10
имя таблицы:privoz
имя файла:C:\Documents and Settings\User\Мои документы\VB\laguna\Новая папка\fcsPrice\FCS060206.xls
с именами полей:Нет
диапозон:C27:F5000


но во время работы бывает необходимость изменить путь к файлу Excel или изменить диапозон ячеек в этом файле для обработки. Не удобно ,особенно для пользователя программы, залазить в Access и менять там настройки макроса :( , подскажите пожалуйсто как можно сделать так что бы такой макрос работал именно из формы программы, для того что бы можно было использовать переменные в необходимых случаях.

Заранее благодарен.

blinow
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 27.06.2005 (Пн) 3:13

Сообщение blinow » 07.02.2006 (Вт) 16:16

А ты попробуй преобразуй макрос в модуль VB и все увидишь.

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 07.02.2006 (Вт) 16:38

Можно в поле "Имя файла" ввести
=Forms![Form1]![Text1], где Form1 - имя твоей формы, а Text1 - имя поля на форме, в котором указан путь

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 07.02.2006 (Вт) 16:47

преобразовал , а как это всё запускать из формы VB. моей программы ?
извините за наивный вопрос ...

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 07.02.2006 (Вт) 16:51

Если ты имеешь ввиду как запустить функцию с формы:
создай кнопку -> на вкладке "Свойства" -> "нажатие кнопки" (click) -> "процедура обработки события" -> ...
Окажешься в коде
пиши запуск
например, call MyProcedure

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 07.02.2006 (Вт) 17:12

нет, Оля, это не совсем то что я имел в виду ...

я вот думаю что должно быть что-то вроде этого:

Код: Выделить всё
Text1.Text = App.Path
Set acc = CreateObject("access.application")
acc.opencurrentdatabase App.Path & "\DB\texinfo.mdb"
acc.Visible = False

acc.DoCmd.OpenTable "privoz", acViewNormal, acEdit
    acc.DoCmd.RunCommand acCmdSelectAllRecords
    acc.DoCmd.RunCommand acCmdDelete
    acc.DoCmd.Save acTable, "privoz"
    acc.DoCmd.RunCommand acCmdSave
    acc.DoCmd.TransferSpreadsheet acImport, 8, "privoz", App.Path & "\fcsPrice\FCS060206.xls", False, "C27:F5000"


это правильно будет ???

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 07.02.2006 (Вт) 17:19

Думаю да

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 08.02.2006 (Ср) 9:06

не работает :(

выдаёт ошибку:
прервано выполнение макрокоманды RunCommand


подскажите, в чём может быть проблемма ?

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 08.02.2006 (Ср) 16:40

Может очистить таблицу с помощью SQL, например, так:

CurrentDb.Execute "DELETE * FROM [TableName];", dbFailOnError

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 08.02.2006 (Ср) 17:02

да я вот уже подумываю может обработать файл через excel.application а потом из vb закинуть информацию в БД .... :(
но опять же эти апликации ... :( , не могу с ними разобраться ... :(

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 08.02.2006 (Ср) 18:45

ты изначально под Access'ом работаешь или под чем?

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 08.02.2006 (Ср) 18:50

Работаю на VB 6.0 , базы использую Access .
До этого момента все операции с Accessom выполнял через макросы, но сейчас появилась большая необходимость изменять некоторые данные для обработки через access , об этом я говорил в начале топика ...

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 09.02.2006 (Чт) 0:30

блин , вот это я тупонул :shock: , я не включил в References библиотеку Access , и сам замучился и людей понапрасну беспокою ... :oops:

p.s: код работает нормально .


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 80

    TopList