powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание excel-кой процедуры из фокса
6 сообщений из 6, страница 1 из 1
Создание excel-кой процедуры из фокса
    #33043316
toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из Фокса в excel выводится некий отчет с которым далее работают пользователи - вносят свои данные. Затем введенные данные необходимо обработать встроенными средствами excel - для этого используем небольшой макрос.
Вопрос - как в excel-кую книгу вставить из фокса код макроса?
...
Рейтинг: 0 / 0
Создание excel-кой процедуры из фокса
    #33043343
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi, Toms.

Честно говоря, никогда этого не делал, но пришла в голову такая идея:
может сделать что-то типа шаблона, то есть пустую экселевскую книгу с уже вписанным макросом. А потом, когда экспортируешь данные в эксель не создавать новую книгу, а экспортировать в шаблон, а затем Save As..., чтобы сам шаблон так и остался пустым.
Думаю это решит проблему.
...
Рейтинг: 0 / 0
Создание excel-кой процедуры из фокса
    #33043360
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напоминает сказку о рыбаке и рыбке да м...
если серьезно ложу в свой каталог проэкта файл макросов эксель что-то типа длл
...
Рейтинг: 0 / 0
Создание excel-кой процедуры из фокса
    #33043520
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаем макрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
m.MacroFileName = "C:\3\SaveMacro.Txt"

m.MFHandle = FCREATE(m.MacroFileName)
* Add the body of the macro
= FPUTS(m.MFHandle, "' QuietSave Macro")
= FPUTS(m.MFHandle, "' ")
= FPUTS(m.MFHandle, "Sub QuietSave()")
= FPUTS(m.MFHandle, "' ")
= FPUTS(m.MFHandle, " Application.DisplayAlerts = False")
*= FPUTS(m.MFHandle, " ActiveWorkbook.Save")
= FPUTS(m.MFHandle, ' ActiveSheet.RANGE("A:'+CHR((i-1)+64)+'").COLUMNS.AUTOFIT')
= FPUTS(m.MFHandle, ' Columns("A:'+CHR((i-1)+64)+'").Select')
*= FPUTS(m.MFHandle, ' Cells.Select')
= FPUTS(m.MFHandle, ' ActiveWorkbook.SaveAs Filename:="'+lcTarget+'", FileFormat:=xlDBF3 , CreateBackup:=False, Local:=True ')
= FPUTS(m.MFHandle, "End Sub")
* Close the open LL file.
=FCLOSE(m.MFHandle)

Используем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
* Add a new Module to the Modules collection
oMacroModule = loExcel.Modules.ADD()
* Pull in the file containing the macro code
oMacroModule.InsertFile(m.MacroFileName)
* Name the macro
oMacroModule.NAME = "MacroSave"
* Run the macro
loExcel.APPLICATION.RUN("QuietSave")

...
Рейтинг: 0 / 0
Создание excel-кой процедуры из фокса
    #33043530
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл сказать - данный макрос экспортирует таблицу в DBF 3...
...
Рейтинг: 0 / 0
Создание excel-кой процедуры из фокса
    #33043542
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tomsИз Фокса в excel выводится некий отчет с которым далее работают пользователи - вносят свои данные. Затем введенные данные необходимо обработать встроенными средствами excel - для этого используем небольшой макрос.
Вопрос - как в excel-кую книгу вставить из фокса код макроса?
Первый вопрос: Каким образом данные из Фокса передаются в Эксель? Если через OLE и Эксель версий 2000 и выше, то можно использовать VBA объект Workbook.VBProjects.VBComponents(1).CodeModule
Этот объект не доступен снаружи в Excel'97 совсем. А в 2000 и выше доступен, но в настройках екселя надо будет сначала разрешить доступ к нему. Иначе будет ругаться на несанкционированный доступ.

Иначе, можно сделать экселевский шаблон с один макросом типа
Код: plaintext
1.
2.
3.
4.
5.
sub ReadMyMacroses
   ThisWorkbook.VBProjects.VBComponents( 1 ).CodeModule.AddFromFile("\temp\mycode.bas")
   call MyCode
   ThisWorkbook.VBProject.VBE.VBProjects.Remove ThisWorkbook.VBProjects.VBComponents( 2 )
   ThisWorkbook.VBProject.VBE.VBProjects.Remove ThisWorkbook.VBProjects.VBComponents( 1 )
end sub

Потом уже из своей программы создаешь mycode.bas с нужным кодом, запускаешь Эксель с этим шаблоном. Вызываешь ExcelOLEObject.Run("TemplateModule.ReadMyMacroses")
потом убиваешь mycode.bas
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Создание excel-кой процедуры из фокса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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