Уважаемые граждане, кто может натолкнуть на мысль и подкинуть идею, как это реализовать.
Опишу в кратце суть проблемы:есть информация в виде строк и столбцов в Excel (таких файлов несколько от 3 до 6), ее нужно выгружать (выборочно не всю) в форму БД Access. На данный момент все делается вручную, хочу автоматизировать. Не прошу сделать это за меня, а прошу навести на путь истинный, каким образом принято это делать. всем спасибо откликнувшимся!
Хорошо знаком с веб-технологиями, но боюсь здесь понадобиться C++. Я его понимаю но знаю слабо, однако разобраться смогу если что.
28 апреля 2008 в 17:02
normal.dot- это в Worde, в Access создаешь форму (можно использовать Мастер, чтобы не забивать голову). добавляешь кнопку и к кнопке (свойство-> действие-> нажатие кнопки) привязываешь код на VBA, или макрос, или запуск запроса. далее форму после отладки сохраняешь.
27 апреля 2008 в 23:02
можно попробовать использовать ADO или DAO. и Access, и Excel это умеют. использовать можно из любого языка.
27 апреля 2008 в 21:02
Ты можешь сохранить макрос в normal.dot и тогда он будет виден для всех документов.
> на VBA написть такую тему чтоб копировала значение из одной ячейки таблички и вставляла ее в другую
В офисе есть одна полезная вещь: Ты можешь записать свои действия в виде макроса, а потом разбирать что там и откуда. Для этого в меню макросы тебе нужно выбрать пункт "Записать макрос".
PS только что сам попробовал решить твою задачу с копированием. Вот результат:
Sub Ìàêðîñ1()
'
' Ìàêðîñ1 Ìàêðîñ
' Ìàêðîñ çàïèñàí 27.04.2008 (Alex)
'
'
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
End Sub
27 апреля 2008 в 20:02
Именно таким решением и занимаюсь, но уже понимаю что это такая пропасть, голова гудит уже. Не могу на VBA написть такую тему чтоб копировала значение из одной ячейки таблички и вставляла ее в другую. Потому что VBA впервые вижу и различные форумы мне не помогают. надо начинать с 0 чтоб что нибудь сделать. Кто подскажет как сохранять проджект VBA как отдельный файл и применять его потом?
27 апреля 2008 в 19:05
В Access создаешь связь с внешними данными Exel ([Файл]=>[Внешние данные]=>[Связь с таблицами..]). И они становятся обычными талицами. Далее можешь управлять ими, как обычными Access-таблицами, хоть через SQL, хоть VBA или любую внешнюю оболочку.
24 апреля 2008 в 12:01
В общем я это и имел ввиду под вторым способом.=)))
24 апреля 2008 в 0:04
Рискну предложить ещё вариант. Поскольку сам я ненавижу VBA лютой ненавистью (по работе много с ним намучился), поэтому предпочитаю OLE-automation. Как Exel, так и Access программируются через automation (COM-интерфейс IDispatch), поэтому подойдёт любой язык с поддержкой automation. Так, недавно "доступался" до данных вExel-овских таблицах из Ruby: там есть модуль WIN32OLE – милое дело, всё прекрасно работает. С++ имеет смысл применять только в случае, когда хочется снизить до минимума накладные расходы на вызов методов интерфейсов. Обычно для таких разовых задач это не нужно.
Пример на Ruby. Данная функция сохраняет таблицу Exel в текстовый файл в формате comma-separated values.
def convert_xls_to_csv(xls_path, csv_path, force_rewrite = true)
xl_CSV_Windows = 23
excel = WIN32OLE.new "excel.application"
excel['Visible'] = false
excel.Workbooks.Open xls_path
File.unlink csv_path if File.exist?(csv_path) and force_rewrite
excel.ActiveWorkbook.Sheets("Sheet1").SaveAs csv_path, xl_CSV_Windows
excel.ActiveWorkbook.Close 0
excel.Quit
csv_path
end
Уверен, в Access имеется импорт из CSV
23 апреля 2008 в 23:01
Ну ребятам денег точно давать не нужно. Есть программа которая перегоняет данные между разными видами БД. В том числе и ексель и аксесс и мускуль и еще куда угодно через одбц=)))
А если на С++ или дельфи, то надо использовать COM – а это есть геморой большой.(сам 2 недели этим занимался) А в результате все равно практически на VBA придётся писать=)))
В общем если писать самому у тебя 2 варианта(так как форматы ексель и аксесс закрытые)
1. Макросы на VBA
2. Управление через COM
23 апреля 2008 в 23:00
2 Иван Игнатов
Попробуте ребятам дать денег знакомым они за вас в ручную будут забивать данные(может коллеги или одногрупники наверняк кто либо согласится)
23 апреля 2008 в 22:02
А более мощными средствами например C или Delphi это тяжело сделать?
23 апреля 2008 в 20:00
Вроде в аксесе есть импорт из экселя. а потом удалить лишние строки. Ну автоматизировать можно на VBA
23 апреля 2008 в 20:00
Скорее понадобится VBA. Напиши надстройку к Excel, при подключении показывай дополнительное меню – типа "импорт в акцесс". Для просветления почитай Steven Roman "Использование макросов в Excel", там в частности написано, как надстройки делать.