powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запуск модулей Excel (.bas) через Access
28 сообщений из 28, показаны все 2 страниц
Запуск модулей Excel (.bas) через Access
    #32759542
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сможет кто-нибудь подсказать, как сделать запуск модулей Excel (.bas) через Access.
Т.е. формирование отчета в Excel произойдет через интерфейс Access для пользователя (на основании данных Access).

Сам модуль работает в Excel нормально.

Заранее благодарю!
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32759749
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у аксесс-апликейшен есть метод run возможно и у эксела есть
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32759774
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точно, есть , хоть и скрытый

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Макрос1()

    ActiveCell.FormulaR1C1 = "1"
    Range("D6").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("D7").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("D10").Select
End Sub

Public Sub tst()
Application.Run "Макрос1"
End Sub
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32759813
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dim f As Excel.Workbook
Set f = Excel.Workbooks.Open("d:\tmp\m.xls")
Excel.Run "mmm"
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32766942
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь!
Но возник еще вопрос -
после запуска
Dim f As Excel.Workbook
Set f = Excel.Workbooks.Open("d:\tmp\m.xls")
Excel.Run "mmm"

пишет, что не найден макрос "mmm".

Не подскажете в чем дело?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767031
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСам модуль работает в Excel нормально.

уверен что mmm это имя процедуры модулях в эксела?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767049
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RRRulexСпасибо за помощь!
Но возник еще вопрос -
после запуска
Dim f As Excel.Workbook
Set f = Excel.Workbooks.Open("d:\tmp\m.xls")
Excel.Run "mmm"

пишет, что не найден макрос "mmm".

Не подскажете в чем дело?

Set f = Excel.Workbooks.Open("d:\tmp\m.xls")

f.Application.Run "mmm"
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767381
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что не видит во вновь открытой книге Excel вообще никаких макросов:

Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True



хотя они там до это были
эти модули весь отчет и форматируют
просто нужно чтобы из Access открывался

Подскажите в чем дело?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767425
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot RRRulex]Дело в том, что не видит во вновь открытой книге Excel вообще никаких макросов:

[quot]

это может означать, что

а) макросов там никогда и не было - жили они В ДРУГОЙ книге и на ДРУГОМ компуктере. Просто в момент загрузки именно этой всегда "оказывались под рукой". Например, жили они в personal.xls ...
б) они были, но враг их потер.
в) они были и есть там же где были. Включена "высокая безопасность", запрещающая исполнение макросов.

Выбирай на вкус
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767444
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что если открыть любую другую книгу - там есть все макросы
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32767520
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Из другого топика, закрытого мной:

RRRulexДело в том, что не видит во вновь открытой книге Excel вообще никаких макросов:

Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True


Подскажите в чем дело?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32768193
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Victosha за советы, но тем не менее
для запуска книги Excel с формированным отчетом в Access использую следующее решение:

Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True


Книга открывается нормально, отчет формируется, но необходимые макросы для определенного форматирования отчета отсутствуют.
Если просто создать новый документ *.xsl, то там все макросы есть - и дело тут не в запрещении макросов, и не в открытости их для всех книг, а в чем то другом - можеть быть данная процедура не открывает полноценную книгу Excel ?
Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32768235
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RRRulexСпасибо Victosha за советы, но тем не менее
для запуска книги Excel с формированным отчетом в Access использую следующее решение:

Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True


Книга открывается нормально, отчет формируется, но необходимые макросы для определенного форматирования отчета отсутствуют.
Если просто создать новый документ *.xsl, то там все макросы есть - и дело тут не в запрещении макросов, и не в открытости их для всех книг, а в чем то другом - можеть быть данная процедура не открывает полноценную книгу Excel ?
Подскажите, пожалуйста!

из указанных причин, наиболее вероятна а)

если экземпляр Ексель уже открыт,
то
Set objExcel=CreateObject("Excel.Application")
вернет ссылку на существующий в памяти ексель,
а
Set objExcel=New Excel.Application
создаст новый экземпляр.

У Вас, судя по всему, макросы хранятся в personal.xls.

В точности я не знаю что и как тут произойдет.

При открытии второго экземпляра "вручную" просто выводится предупреждение, о том, что Personal.xls занят и может быть открыт только на чтение.

в варианте
Set objExcel=New Excel.Application
возможно, игнорируется открытие уже занятых файлов - не знаю.

ЗЫ
Вы сказали, что макросы "отсутствуют", но не сказали, где они хранятся...
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32817366
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже задавал этот вопрос, но сейчас натолкнулся на него в форуме и решил уточнить:

для авто запуска из Access макроса для .xls использую:

Dim objExcel As Excel.Application

Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open ("C:\отчет.xls")

objExcel.Visible = True

objExcel.Run "макрос1"

Макрос не выполняется, потому что не находится.
Макрос расположен C:\Documents and Settings\логин\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS

Подскажите, как его все-таки запустить?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #32888978
RRRulex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кто заинтересуется, чем эта история закончилась, то сообщаю:

Сначала я просто вывожу отчет в Excel без запуска *.bas
А затем в созданном документе Excel импортирую (Alt+F11) необходимый *.bas
Теперь при следующем запуске отчета из Access програмка находит указанный макрос и запускает его.
Следующий отчет формируется на основе установленных свойств предыдущего экземпляра книги Excel.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запуск модулей Excel (.bas) через Access
    #34601740
Era5er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень бы хотелось возобновить тему, столкнулся с похожей проблемой:

Имеем некий файл "1.xls " в папке C:\Base\1.xls (куда он периодически попадает)
в нем необходимо сделать некоторые изменения с помощью макроса. Так вот, если я открываю excel и запускаю макрос (123 напрмер) и (который у меня храниться в файле personal.xls) то все как бы работает, но при запуске из Access говорит что такой макрос "123" не найден !!! :(

Можно еще раз вернуться к этому вопросу и по возможности помочь !?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запуск модулей Excel (.bas) через Access
    #35552507
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

У меня такая проблема. Не могу открыть книгу Excel вообще. Пишу код на кнопку:
Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True
А он мне отвечает, что objExcel As Excel.Application - User-defined type not defined.

Что не так?

Заранее спасибо!
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #35552541
Фотография RADDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei GennadevichДобрый день!

У меня такая проблема. Не могу открыть книгу Excel вообще. Пишу код на кнопку:
Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True
А он мне отвечает, что objExcel As Excel.Application - User-defined type not defined.

Что не так?

Заранее спасибо!

не подключена библиотека Excel
тут была такая же проблема
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #35552549
RTFM......
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei GennadevichДобрый день!

У меня такая проблема. Не могу открыть книгу Excel вообще. Пишу код на кнопку:
Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook

Set objExcel = New Excel.Application
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook

objExcel.Visible = True
А он мне отвечает, что objExcel As Excel.Application - User-defined type not defined.

Что не так?

Заранее спасибо!
А что справка не этот счет думает?
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #35552563
Фотография RADDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...и вот это - лишнее
Alexei Gennadevich
objExcel.Workbooks.Open ("C:\Отчет.xls")
Set objWorkBook = objExcel.ActiveWorkbook



Код: plaintext
1.
Set objWorkBook =objExcel.Workbooks.Open ("C:\Отчет.xls")
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #35553402
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подключил библиотеку Excel и все заработало. Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запуск модулей Excel (.bas) через Access
    #40118183
kulib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei Gennadevich
Подключил библиотеку Excel и все заработало. Спасибо.

Граждане-товарищи, всем здравствуйте! А не сможет кто-нибудь помочь разобраться что происходит? Всё по теме "Запустить макрос Excel из Access через VBA". В целом у меня пазлик сложился - в аксе есть процедурка для запуска экселя с параметрами запуска (макрос). библиотека подключена.
Сам Эксель запускается и в тестах даже отрабатывает несложный процесс. НО!!! Во-первых вызванный макрос почему-то запускается два раза последовательно друг за другом, во-вторых эксель в конце НЕ ЗАКРЫВАЕТСЯ, хотя ему для этого всё определенно сказано Application.Quit

Прикрепил тестовые данные, можно запускать из любого места там всё просто - запускаем Аксесс, там жмем кнопочку, запускается Эксель с метками пошагового выполнения.
Да, совсем забыл, макрос запускается из Аксесс с переменной sParam, которая передаётся Экселю, это важно! И сама переменная передается нормально.

Вот код для запуска Экселя из Аксесс:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Function ЗапускЭкселя(ByVal fName As String, Optional ByVal sCommand As String) 'v.1.1 Запуск внешнего приложения Excel с запуском команды(макрос)

Dim objExcel

    On Error GoTo Err1
If Not GetObject(, "Excel.Application") Is Nothing Then
    Set objExcel = GetObject(, "Excel.Application") 'Excel запущен
Else
    Set objExcel = CreateObject("Excel.Application")
End If
    On Error GoTo 0
With objExcel
    .Visible = True
    .Workbooks.Open (fName)
    If sCommand > "" Then .Run sCommand
End With
    Set objExcel = Nothing 'Application.Quit


Exit Function

Err1:
' Test to see if there is a copy of Microsoft Excel already running.
    'On Error Resume Next    ' Defer error trapping.
' Getobject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
    'Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear    ' Clear Err object in case error occurred
    Set objExcel = CreateObject("Excel.Application")
Resume Next

End Function



Вот сама процедурка вызывающая этот код для запуска определенной книги с определенным макросом
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test1()

Dim sParam As String
sParam = 10096

sObj = "c:\Temp\TEST1\TEST.xls"

ЗапускЭкселя sObj, "TestStartOutSide(" & sParam & ")"

End Sub



Саму процерку проверочную не буду описывать, она абсолютно простая. Но два вопроса не решены( Почему два раза и почему не закрывается. Пробовал в MSO 2003 на Win7x32 и в MSO2010 на Win10x64
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118321
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А оно вообще работает?
Код: vbnet
1.
On Error GoTo 0


Метки 0 не нашел, ругаться должно бы..
On error(оба) закомментируй и пройди функцию по строкам - может где какая ошибка вылезет
а Application.quit у тебя закомментировано
раскомментируй или попробуй objExcel.quit
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118330
ValK412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kulib,
'If sCommand > "" Then .Run sCommand ' "TestStartOutSide(1001)" - это сперва запустит указанную команду на расчет, ожидая получить в результате имя "макроса" - которое потом запустит на исполнение
- поэтому 2 раза
в хелпе: If a string is used, the string will be evaluated in the context of the active sheet.

Пример: здесь явно указано имя макроса (процедуры), поэтому двойного запуска не будет
If sCommand > "" Then .Run "Module1.TestStartOutSide", 1001
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118340
kulib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311
А оно вообще работает?
Код: vbnet
1.
On Error GoTo 0


Метки 0 не нашел, ругаться должно бы..
On error(оба) закомментируй и пройди функцию по строкам - может где какая ошибка вылезет
а Application.quit у тебя закомментировано
раскомментируй или попробуй objExcel.quit
Добрый день! Ну вообще если нет On Error апликация сама понимает, что вывод ошибок должен работать по дефолту. поэтому здесь это будет лишним. А c Application.Quit все нормально, строка активна, но не работает!

ValK412
kulib,
'If sCommand > "" Then .Run sCommand ' "TestStartOutSide(1001)" - это сперва запустит указанную команду на расчет, ожидая получить в результате имя "макроса" - которое потом запустит на исполнение
- поэтому 2 раза
в хелпе: If a string is used, the string will be evaluated in the context of the active sheet.

Пример: здесь явно указано имя макроса (процедуры), поэтому двойного запуска не будет
If sCommand > "" Then .Run "Module1.TestStartOutSide", 1001
А вот гражданину огромное СПАСИБО! Всё сработало! Мда, не хватет мне теоретических знаний!
Только Аксесс теперь при выполнении строки
Код: vbnet
1.
If sCommand > "" Then .Run sCommand, sParam


запускает Эксель, в самом экселе все процессы отрабатывают корректно, эксель закрывается, но у самого Акса выскакивает Automation Error. Причем дебаг именно на самое строке кода, как будто он ее саму не выполнил! Поможете еще разок недоучке?))) Сам не смогу наверное долго понять т.к. не сам придумал
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118346
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я говорил - пройди выполнение программы дебаггером!
Сразу поймешь - как он второй раз запускался, где и какая ошибка возникает и как ее лечить
Я прошел и понял.
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118429
ValK412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kulib,

У Вас Excel успевает закрыть книгу TEST.xls ))
прежде чем Access сделает свои дела в этой строке

поэтому закрывать, думаю, лучше здесь:
End With
objExcel.Workbooks("TEST.xls").Close
objExcel.Quit
Set objExcel = Nothing 'Application.Quit
...
Рейтинг: 0 / 0
Запуск модулей Excel (.bas) через Access
    #40118650
kulib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311
Я говорил - пройди выполнение программы дебаггером!
Сразу поймешь - как он второй раз запускался, где и какая ошибка возникает и как ее лечить
Я прошел и понял.

Спасибо Вам!

ValK412
kulib,

У Вас Excel успевает закрыть книгу TEST.xls ))
прежде чем Access сделает свои дела в этой строке

поэтому закрывать, думаю, лучше здесь:
End With
objExcel.Workbooks("TEST.xls").Close
objExcel.Quit
Set objExcel = Nothing 'Application.Quit

Огромное Спасибо за действенную помощь! Всё получилось! Я самоучка и некоторые вещи не догоняю, а годиков уже много и работы не меньше чтобы начинать теорию грызть. Если посчитаете, что я когда-то в чём-то смогу вам помочь - не постесняйтесь обратиться!)))

А в целом по теме надеюсь мои "каракули" помогут многим, кто умеет пользоваться поиском на форуме. Всем добра!
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запуск модулей Excel (.bas) через Access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]