powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчет в Excel под Win98
6 сообщений из 6, страница 1 из 1
Отчет в Excel под Win98
    #32615738
Sergey Volodko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите!

Из Vfp6 формирую отчет в Excel используя шаблон. Под WinMe все Ок. При переносе программы на Win98, если отчет большой то вываливается: "Программа Excel вызвала ошибку защиты памяти и т.д".
Т.е. на небольших отчетах все работает а на больших - нет. Подскажите как лечить?
...
Рейтинг: 0 / 0
Отчет в Excel под Win98
    #32616354
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как именно формируется отчет...

Если непосредственно из лисы... то такая ошибка возникает у всех операционках... Эт наблюдается если часто и большие отчеты...

Я решил эту проблему через макрос...
Данные формируются в лисе а вывод происходит в макросе...

типа:

Код: plaintext
1.
2.
3.
4.
OleExcel = createobject('Excel.Application')
oleExcel.Application.Workbooks.Open(Template) 
oleExcel.Run("Copy_Kniga_new",docIndex) && макрос создает аналог текущего листа шаблона
OleExcel.Run("My_Start_Header",my_rows_copy,my_rows_paste,@my_mas_perem)
в зависимости от переменных происходит вывод данных в цикле

1) У меня перестала появляться эта замечательная ошибка
2) Значительно ускорился процесс вывода в ексель (где-то в 5-20 раз в зависимости от листа шаблона и специфики вывода)
...
Рейтинг: 0 / 0
Отчет в Excel под Win98
    #32616691
Sergey Volodko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Да,отчет формируется непосредственно из vfp. Создается шаблон в котором прописываются параметры отчета и какие поля надо выводить, затем фох открывает шаблон обрабатывает его параметры и формирует
ексел-таблицу. На компе с ВИНМЕ все работает четко не зависимо от длины отчета, а на других системах глюки. Глючит похоже ОЛЕ. Может его можно как то лечить?
Нельзяли поподробнее про макрос и если можна - пример. Если я правильно понял то я всю процедуру вывода делаю макросом на вижуал бейсике? Т.е создаю файл My_Start_Header в котором командами бейсика формирую строку отчета и в цикле запускаю макрос? Пожалуйста, хотелось бы поподробнее с этого места.
...
Рейтинг: 0 / 0
Отчет в Excel под Win98
    #32617035
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Весь макрос я предоставить не могу...
Но могу кое-в чем помочь...

1) Создавать макрос надо в 97 Экселе...
Если создаешь более поздних версиях и запускаешь под 97 некоторые функции могут отсутствовать... например функция округления...
2) Первая функция макроса должна создавать макет по шаблону
Код: plaintext
Workbooks.Add
и забирать все настройки из нужного листа шаблона (например длина колонки иль еще че-то если надо)...
Код: plaintext
Workbooks(Copy_Kniga).Worksheets( 1 ).Columns("A:A").ColumnWidth = Workbooks(Activate_kniga).Worksheets( 2 ).Columns("A:A").ColumnWidth

3) передаешь какая строка шаблона копируется и куда вствляется...
также масив выводимых значений
например 1 строка копируется вставляется в 10
Код: plaintext
1.
Workbooks(Activate_kniga).Worksheets(docIndex).Rows( 1 ).Copy
Workbooks(Copy_Kniga).Worksheets( 1 ).Paste (Workbooks(Copy_Kniga).Worksheets( 1 ).Rows( 10 ))

потом разбираешь свой массив и вставляешь в нужные ячейки данные...
например если нужно записатьв 1 колонку 10 строки запись Привет,
то первый элемент масива должен равняться 'A Привет'
Код: plaintext
1.
2.
  Где:
     1 )А + определенное количество пробелов -> номер колонки
     2 ) 'Привет' -> это нужные данные
теперь нужная колонка + нужная строка . значение = "привет"
Код: plaintext
Workbooks(Copy_Kniga).Worksheets( 1 ).Range( 1 , 10 ).Value="привет"
Если текст невлазит, то раздвинуть ячейку до нужной ширины...
За это должна отвечать функция по вычислению ширины...
P.S. С ней я наеб... но все-же достиг более-ли-менее оптимального результата...
Извини пример не могу пробить... эт часть есть в документе по защ. прав. интелек. собственн. КАК и почти весь макрос и главные проги лисы...

Также в масиве можно передавать параметры ячейки...
Какой текст, какой цвет, какой размер и т. д. по усмотрению...

4) Макрос капирования настроек листа и закрытия шаблона...
например параметры печати
Код: plaintext
1.
Workbooks(Copy_Kniga).Worksheets( 1 ).PageSetup.PrintArea = Workbooks(Activate_kniga).Worksheets(docIndex).PageSetup.PrintArea

И вперед в соответствии данного примера...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
OleExcel = createobject('Excel.Application')
my_mas_perem[ 1 ] = 'A       Привет'
docIndex =  1  && номер копируемого листа
OleExcel = createobject('Excel.Application')
OleExcel.Run("Macro1",docIndex) 
OleExcel.Run("Macro2", 1 , 10 ,@my_mas_perem)
OleExcel.Run("Macro3")
Release OleExcel



Желаю удачи...
...
Рейтинг: 0 / 0
Отчет в Excel под Win98
    #32617881
Sergey Volodko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пытаться разгребать. Просто удивительно то что везде пишеться о том как просто и элегантно можно из фокса перекинуть в ексель, а оказывается не все так просто... ;-( Еще раз спасибо, что откликнулись.
...
Рейтинг: 0 / 0
Отчет в Excel под Win98
    #32618449
LightWarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня отчет выводился из vfp8 в Excel2003 просто замечательно. Когда прогу стали запускать из vfp6 в Excel97 стала вылазить ошибка памяти Excel. Примечательно то что при пошаговом выполнении тоже все отлично выводилось в excel. Я просто добавил паузу (секунду) после создания экземпляра объекта excel, после открытия шаблонного документа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
oxl=CREATEOBJECT("Excel.Application")
Inkey( 1 )
oxl.Workbooks.add(SYS( 5 )+SYS( 2003 )+"\template.xls")
Inkey( 1 )
oxl.ActiveWorkbook.SaveAs("c:\week.xls")
Inkey( 1 )
oxl.ActiveSheet.cells( 2 , 2 )= 'c '+Dtoc(ldBegin)+' по '+ Dtoc(ldEnd)
oxl.ActiveSheet.cells( 5 , 3 )=lnAll
...
oxl.ActiveWorkbook.Save()
oxl.Quit
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчет в Excel под Win98
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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