Текущее время: Пн, май 12 2025, 00:31

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 103, 104, 105, 106, 107, 108, 109 ... 161  След.
Автор Сообщение
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 14:05 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 19 2015, 13:56
Сообщения: 12
Добрый день.
Подскажите пожалуйста, в WebGui (CRM, SM) как использовать данный ФМ. Установил 2.92 все по инструкции, в GUI тестовый кусок кода из шапки и тестовые программы работают. Пытаюсь вызвать его же из Web Gui:
- если прописать код в событии по нажатии кнопки в компоненте получаю дамп "Exception condition "NO_BATCH" raised."
- если вызывать через transaction launcher получаю ошибку "Подождите, будет выполнена автоматическая переадресация. Эта страница была вставлена по техническим причинам"


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 16:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
UKY написал(а):
Parazit, спасибо Вам за вашу разработку! Работает во многих отчётов без нареканий :)

Но в одном отчёте при выгрузке 57 тыс строк почему-то тормозит... Версия ФМ, правда, старая от 2011 года, но, думаю, это не принципиально в данном случае.

Шаблон такой (никакие макросы из него не запускаются, т.е. автоподбор высоты строки c объединёнными ячейками НЕ делается):
https://drive.google.com/file/d/0B9mldSUn8dOXRXEzQkhQSGgxSEE/view?usp=sharing

it_values такие:
Code:
     INDEX VAR_NAME VAR_NUM FIND_TEXT       VAL_TYPE VALUE

        1                 1 <CONTR_NAME>              ОАО "Компания"
        2                 1 <CONTR_INN_KPP>          123345/98743543
        3                 1 <DATE_FROM>              01.10.2014
        4                 1 <DATE_TO>                31.12.2014
        5                 1 <ADD_NUM>
        6                 1 <ADD_DATE>
        7  LINE           1 <NUM>                    0001
        8  LINE           1 <OPER_TYP>               '
        9  LINE           1 <INV>                    000001, 31.05.2014
       10  LINE           1 <INV_CORR>
       11  LINE           1 <KSF>
       12  LINE           1 <KSF_CORR>
       13  LINE           1 <BUY_VAT_PAY>
       14  LINE           1 <BUY_ACC_DAT>            25.06.2014
       15  LINE           1 <NAME>                   ООО "ООО"
       16  LINE           1 <INN_KPP>                654654/234234234
       17  LINE           1 <AGENT>
       18  LINE           1 <AGENT_INN_KPP>          -/-
       19  LINE           1 <BUY_CUSTOMS>            -
       20  LINE           1 <SELL_ACCEPT>
       21  LINE           1 <CURRENCY>
       22  LINE           1 <BUY_SUM>                0.07
       23  LINE           1 <BUY_VAT>                0.01
       24  LINE           1 <SELL_CUR>
       25  LINE           1 <SELL_RUB>               0.00
       26  LINE           1 <SELL_SUM_18>            0.00
       27  LINE           1 <SELL_SUM_10>            0.00
       28  LINE           1 <SELL_SUM_0>             0.00
       29  LINE           1 <SELL_VAT_18>            0.00
       30  LINE           1 <SELL_VAT_10>            0.00
       31  LINE           1 <SELL_WO_VAT>            0.00
       32  LINE           1 <MWSKZ>                  PC
       33  LINE           1 <BELNR>                  987234532
       34  LINE           1 <GJAHR>                  2014
       35  LINE           1 <WRBTR_WRS_INV>          RUB

ZWWW_OPENFORM выгружает значения через промежуточный локальный файл.

Всё в Excel передаётся быстро, но потом сам процесс Excel'я загружает процессор на 100% и никому не удалось дождаться окончания. Разметку страницы убрали, в ФМ стоит set property of app 'ScreenUpdating' = 0.

Вы не знаете, в чём может быть дело, уже всю голову сломал, что не так :)


Отвечу за автора. Поставьте свежую версию. В ней есть оптимизация. При её использовании отрабатывает файл с макросом. Ваша форма быдет выводиться существенно быстрее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 16:41 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
land08 написал(а):
Добрый день.
Подскажите пожалуйста, в WebGui (CRM, SM) как использовать данный ФМ. Установил 2.92 все по инструкции, в GUI тестовый кусок кода из шапки и тестовые программы работают. Пытаюсь вызвать его же из Web Gui:
- если прописать код в событии по нажатии кнопки в компоненте получаю дамп "Exception condition "NO_BATCH" raised."
- если вызывать через transaction launcher получаю ошибку "Подождите, будет выполнена автоматическая переадресация. Эта страница была вставлена по техническим причинам"


Параметр USE_JAR ставите в 'X' ???


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 16:44 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
2Parazit: Коллега, вы правы. Вся свистопляска начинается, когда используем десятичный разделитель, отличный от дефолтного в функции.
Тогда, начинается такая магия: 2.53 -> 01.02.1953 -> 19391,00
Жесть


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 16:50 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 19 2015, 13:56
Сообщения: 12
Acid_Firewood написал(а):
land08 написал(а):
Добрый день.
Подскажите пожалуйста, в WebGui (CRM, SM) как использовать данный ФМ. Установил 2.92 все по инструкции, в GUI тестовый кусок кода из шапки и тестовые программы работают. Пытаюсь вызвать его же из Web Gui:
- если прописать код в событии по нажатии кнопки в компоненте получаю дамп "Exception condition "NO_BATCH" raised."
- если вызывать через transaction launcher получаю ошибку "Подождите, будет выполнена автоматическая переадресация. Эта страница была вставлена по техническим причинам"


Параметр USE_JAR ставите в 'X' ???


пробовал - дамп тот же. падает в подпрограмме GetTempDir, при вызове ФМа WS_EXECUTE. И кстати в проверках на WebGui (подпрограмма CheckGui) у меня возвращается пусто.


Последний раз редактировалось land08 Пн, янв 19 2015, 17:12, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 16:56 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
land08 написал(а):
пробовал - дамп тот же. падает в подпрограмме GetTempDir, при вызове ФМа WS_EXECUTE.


Не обнаружил такую подпрограмму в группе функций, к которой относится ФМ WS_EXECUTE.
Тем не менее, попробуйте исключить вызов этого ФМ, после отработки ФМ ZWWW_OPENFORM.
Пусть пользователь сам запускает сформированный файл.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 17:06 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 19 2015, 13:56
Сообщения: 12
Acid_Firewood написал(а):
land08 написал(а):
пробовал - дамп тот же. падает в подпрограмме GetTempDir, при вызове ФМа WS_EXECUTE.


Не обнаружил такую подпрограмму в группе функций, к которой относится ФМ WS_EXECUTE.
Тем не менее, попробуйте исключить вызов этого ФМ, после отработки ФМ ZWWW_OPENFORM.
Пусть пользователь сам запускает сформированный файл.


Может быть неправильно выразился - этот ФМ вызывается внутри подпрограммы GetTempDir, которая внутри DownloadWWWTemplate. обойти это вряд ли получится, т.к. здесь видимо выгружается шаблон из репозитария для дальнейшего использования.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 17:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Мне кажется, что ФМ у вас не детектирует работу WebGui.
Посмотрите в отладке, что вам возвращает ФМ 'GUI_IS_ITS' в подпрограмме 'CHECKGUI'.
Видимо, проблема здесь. Так как в подпрограмме 'GETTEMPDIR' есть ветка, по которой отрабатывает один из 2-х ФМ, по определению временной директории для шаблона


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 17:35 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Если ФМ определит, что у вас работает WebGui, то ниже, 'WS_EXECUTE' просто не запустится и всё будет нормально. Без ошибок


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 17:47 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 19 2015, 13:56
Сообщения: 12
Acid_Firewood написал(а):
Мне кажется, что ФМ у вас не детектирует работу WebGui.
Посмотрите в отладке, что вам возвращает ФМ 'GUI_IS_ITS' в подпрограмме 'CHECKGUI'.
Видимо, проблема здесь. Так как в подпрограмме 'GETTEMPDIR' есть ветка, по которой отрабатывает один из 2-х ФМ, по определению временной директории для шаблона


в том то и беда, что пусто возвращает. я поэтому в первом сообщении и спросил где вызывать сам ФМ - видимо где-то не там я его вызываю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 17:55 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
При написании WDP-программ я пихаю вызов ФМ на событие OnAction для кнопки. Всё работает.
Увы. Не могу смоделировать ваши грабли


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 23:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
UKY написал(а):
Parazit, спасибо Вам за вашу разработку! Работает во многих отчётов без нареканий :)

Но в одном отчёте при выгрузке 57 тыс строк почему-то тормозит... Версия ФМ, правда, старая от 2011 года, но, думаю, это не принципиально в данном случае.

Шаблон такой (никакие макросы из него не запускаются, т.е. автоподбор высоты строки c объединёнными ячейками НЕ делается):
https://drive.google.com/file/d/0B9mldSUn8dOXRXEzQkhQSGgxSEE/view?usp=sharing

it_values такие:
Code:
     INDEX VAR_NAME VAR_NUM FIND_TEXT       VAL_TYPE VALUE

        1                 1 <CONTR_NAME>              ОАО "Компания"
        2                 1 <CONTR_INN_KPP>          123345/98743543
        3                 1 <DATE_FROM>              01.10.2014
        4                 1 <DATE_TO>                31.12.2014
        5                 1 <ADD_NUM>
        6                 1 <ADD_DATE>
        7  LINE           1 <NUM>                    0001
        8  LINE           1 <OPER_TYP>               '
        9  LINE           1 <INV>                    000001, 31.05.2014
       10  LINE           1 <INV_CORR>
       11  LINE           1 <KSF>
       12  LINE           1 <KSF_CORR>
       13  LINE           1 <BUY_VAT_PAY>
       14  LINE           1 <BUY_ACC_DAT>            25.06.2014
       15  LINE           1 <NAME>                   ООО "ООО"
       16  LINE           1 <INN_KPP>                654654/234234234
       17  LINE           1 <AGENT>
       18  LINE           1 <AGENT_INN_KPP>          -/-
       19  LINE           1 <BUY_CUSTOMS>            -
       20  LINE           1 <SELL_ACCEPT>
       21  LINE           1 <CURRENCY>
       22  LINE           1 <BUY_SUM>                0.07
       23  LINE           1 <BUY_VAT>                0.01
       24  LINE           1 <SELL_CUR>
       25  LINE           1 <SELL_RUB>               0.00
       26  LINE           1 <SELL_SUM_18>            0.00
       27  LINE           1 <SELL_SUM_10>            0.00
       28  LINE           1 <SELL_SUM_0>             0.00
       29  LINE           1 <SELL_VAT_18>            0.00
       30  LINE           1 <SELL_VAT_10>            0.00
       31  LINE           1 <SELL_WO_VAT>            0.00
       32  LINE           1 <MWSKZ>                  PC
       33  LINE           1 <BELNR>                  987234532
       34  LINE           1 <GJAHR>                  2014
       35  LINE           1 <WRBTR_WRS_INV>          RUB

ZWWW_OPENFORM выгружает значения через промежуточный локальный файл.

Всё в Excel передаётся быстро, но потом сам процесс Excel'я загружает процессор на 100% и никому не удалось дождаться окончания. Разметку страницы убрали, в ФМ стоит set property of app 'ScreenUpdating' = 0.

Вы не знаете, в чём может быть дело, уже всю голову сломал, что не так :)

Кажется догадываюсь, смущают первые 6 строк в приведённом примере it_values, у них VAR_NUM = 1. Любое не нулевое значение этого поля означает, что область указанная в VAR_NAME это таблица и производится её копирование столько раз, сколько уникальных значений VAR_NUM - в данном случае 1 (одно копирование). В вашем случае VAR_NAME пустое, значит эта операция производится над всем листом, т.е. добавить лист в самого себя. При ручной попытке "Добавить скопированные ячейки" всего выделенного листа в него же выдает сообщение о невозможности операции. Возможно это сообщение и "подвешивает" Excel, ожидая пока вы нажмете Ок. Кстати, попробуйте через Alt+Tab поискать это окошко, чтобы проверить догадку.
А вылечить это просто - для не табличных частей отчета не надо задавать VAR_NUM.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 23:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Bambroff написал(а):
Добрый день!
Ситуация: выгружаются данные в MS Word. В данных содержатся символы: α,β. Из системы разработки все выгружается ОК. Из продуктивной системы - указанные символы заменяются на решетки #. Версии компонент систем идентичны. Сравнение исходников ZWWW отличий не выявило (точнее, небольшие отличия были, но они - в ключе "лишние пробелы", "переводы строк" и т.п). Подскажите, пожалуйста, в каком направлении еще можно покопать для решения проблемы?

Сравните настройки SAP-Logon для систем разработки и продуктива, в частности языка и кодировки загрузки/выгрузки.
А можете использовать параметр USE_UNICODE = 'X', тогда не будет зависимости от настроек и можно выводить даже иероглифы. :) Однако объём выгружаемых данных увеличится вдвое, что несколько замедлит выгрузку отчёта.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Пн, янв 19 2015, 23:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
land08 написал(а):
Добрый день.
Подскажите пожалуйста, в WebGui (CRM, SM) как использовать данный ФМ. Установил 2.92 все по инструкции, в GUI тестовый кусок кода из шапки и тестовые программы работают. Пытаюсь вызвать его же из Web Gui:
- если прописать код в событии по нажатии кнопки в компоненте получаю дамп "Exception condition "NO_BATCH" raised."
- если вызывать через transaction launcher получаю ошибку "Подождите, будет выполнена автоматическая переадресация. Эта страница была вставлена по техническим причинам"

Что-то мне подсказывает, что речь идёт не о WebGUI, а о Web Dynpro. Глобальная переменная isWebDynpro чему равна?

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Вт, янв 20 2015, 05:18 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 180
Parazit написал:
UKY написал(а):
в одном отчёте при выгрузке 57 тыс строк почему-то тормозит... Версия ФМ, правда, старая от 2011 года, но, думаю, это не принципиально в данном случае.
Шаблон такой (никакие макросы из него не запускаются, т.е. автоподбор высоты строки c объединёнными ячейками НЕ делается):
https://drive.google.com/file/d/0B9mldSUn8dOXRXEzQkhQSGgxSEE/view?usp=sharing

Кажется догадываюсь, смущают первые 6 строк в приведённом примере it_values, у них VAR_NUM = 1. Любое не нулевое значение этого поля означает, что область указанная в VAR_NAME это таблица и производится её копирование столько раз, сколько уникальных значений VAR_NUM - в данном случае 1 (одно копирование).
Кстати, попробуйте через Alt+Tab поискать это окошко, чтобы проверить догадку.

К сожалению, без цифр в VAR_NUM так же загрузка процессора Excel'ем на 100%... По ALT+TAB Excel не появляется, в процессах Excel видно, грузит на 100%, окон у него нет.

Промежуточный файл C:\Users\UserName\AppData\Local\SAP\SAP GUI\tmp\ZWWW_MACROS_100915.xls получается таким:
Code:
9
FILE_NAME   C:\Users\SlobodchikovIuS\AppData\Local\SAP\SAP GUI\tmp\ZFI_J_3RF_BUY_2014-100915.XLSM
MACROSNAME   'ZWWW_MACROS_100915.xls'!FillVariables
DEBUG_MODE   
WITHOUT_OLE   
PRINTDIALOG   
PROTECT   
DECIMAL_SEPARATOR   
CLOSE_FORM   
DELETE_FILE   
   00000   <DATE_TO>   S   1   31.12.2014
*   *   <DATE_FROM>   S   0   01.10.2014
*   *   <CONTR_NAME>   S   0    ОАО "ОАО"
*   *   <CONTR_INN_KPP>   S   0   654654654/1231321321
*   *   <ADD_NUM>   S   0   
*   *   <ADD_DATE>   S   0   
LINE   00001   <WRBTR_WRS_INV>   S   56845   RUB
*   *   <SELL_WO_VAT>   S   0   0.00
*   *   <SELL_VAT_18>   S   0   0.00
*   *   <SELL_VAT_10>   S   0   0.00
*   *   <SELL_SUM_18>   S   0   0.00
*   *   <SELL_SUM_10>   S   0   0.00
*   *   <SELL_SUM_0>   S   0   0.00
*   *   <SELL_RUB>   S   0   0.00
*   *   <SELL_CUR>   S   0   
*   *   <SELL_ACCEPT>   S   0   
*   *   <OPER_TYP>   S   0   '
*   *   <NUM>   S   0   0001
*   *   <NAME>   S   0   ООО "ООО"
*   *   <MWSKZ>   S   0   PC
*   *   <KSF_CORR>   S   0   
*   *   <KSF>   S   0   
*   *   <INV_CORR>   S   0   
*   *   <INV>   S   0   000984, 31.05.2014
*   *   <INN_KPP>   S   0   1321654/876514321
*   *   <GJAHR>   S   0   2014
*   *   <CURRENCY>   S   0   
*   *   <BUY_VAT_PAY>   S   0   
*   *   <BUY_VAT>   S   0   0.01
*   *   <BUY_SUM>   S   0   0.07
*   *   <BUY_CUSTOMS>   S   0   -
*   *   <BUY_ACC_DAT>   S   0   25.06.2014
*   *   <BELNR>   S   0   98412165418
*   *   <AGENT_INN_KPP>   S   0   -/-
*   *   <AGENT>   S   0   


Сам макрос в ZWW_MACROS.xls такой:
Code:
Public Sub FillVariables(FileData As String, UseUnicode As String)
  Dim fs, f, _
      Ln As String, r As Range, Ofs As Range, _
      Ar() As String, I As Long, J As Long, Cnt As Long, _
      Value, QTable As QueryTable, RowsCount As Long, _
      MACROSNAME, ErrNumber, FldsInfo(1 To 300) As Variant, _
      OfsRowsCount As Long, NewRng As Range, OfsCount As Long, _
      CodePageTxt As Integer, FileNameTemplate As String, _
      NumParams As Integer, Param, _
      ResDialogPrint, _
      Sht As Worksheet, _
      Psw As String, _
      FILE_NAME As String, _
      WITHOUT_OLE As String, _
      MACROS_NAME As String, _
      DEBUG_MODE As String, _
      CLOSE_FORM As String, _
      PRINTDIALOG As String, _
      PROTECT_WB As String

  RowsCount = 1
 
  For I = 1 To 300
    FldsInfo(I) = Array(I, 2)
  Next
 
'  Set fs = CreateObject("Scripting.FileSystemObject")
  ErrNumber = 0
 
  With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
  End With

  Err.Clear
  ErrNumber = 0
 
  I = 0
  CodePageTxt = -2
  If UseUnicode = "X" Then
    CodePageTxt = -1
  End If

'  Set f = fs.OpenTextFile(FileData, 1, 0, CodePageTxt)
  Open FileData For Input As #1
 
'  NumParams = f.ReadLine
  Line Input #1, Ln
  NumParams = Ln
 
'  Do While Not f.AtEndOfStream And NumParams > 0
  Do While Not EOF(1) And NumParams > 0
    NumParams = NumParams - 1
   
'    Ln = f.ReadLine
    Line Input #1, Ln

    Param = Split(Ln, Chr(9))
    If UBound(Param) = 1 Then
      Select Case Param(0)
        Case "FILE_NAME"
          FILE_NAME = Param(1)
        Case "WITHOUT_OLE"
          WITHOUT_OLE = Param(1)
        Case "MACROSNAME"
          MACROS_NAME = Param(1)
        Case "DEBUG_MODE"
          DEBUG_MODE = Param(1)
        Case "CLOSE_FORM"
          CLOSE_FORM = Param(1)
        Case "PRINTDIALOG"
          PRINTDIALOG = Param(1)
        Case "PROTECT"
          PROTECT_WB = Param(1)
      End Select
    End If
  Loop
 
  If DEBUG_MODE = "X" Then
    Stop
  End If
 
  If WITHOUT_OLE = "X" And FILE_NAME <> "" Then
    Dim App As New Excel.Application
'    Dim App As Application
   
'    Set App = Application
    App.DisplayAlerts = False
    App.ScreenUpdating = False
    App.Workbooks.Open FILE_NAME
    App.ActiveWorkbook.Activate
  Else
    Set App = Application
  End If
 
  If DEBUG_MODE = "X" Then
    App.Visible = True
    App.ScreenUpdating = True
  End If
 
  Set r = App.Cells
 
'  Do While Not f.AtEndOfStream
  Do While Not EOF(1)
   
    I = 1 ''I + 1
   
'    Ln = f.ReadLine
    Line Input #1, Ln
   
'    ReDim Preserve Ar(1 To I) As t_Ar
    Ar = Split(Ln, Chr(9), 6, vbBinaryCompare)
    If Ar(4) > 0 Then
      Ar(4) = Ar(4) - 1
    End If
   
'    ErrNumber = 0
    On Error Resume Next
    If Ar(0) = "" Then
      Set r = App.Cells
      ErrNumber = Err.Number
    Else
      If Ar(0) <> "*" Then
        'At new VAR_NAME
         
        Set r = App.Range(Ar(0))
        ErrNumber = Err.Number
        RowsCount = r.Rows.Count
        OfsCount = RowsCount
       
        If ErrNumber = 0 And Ar(4) <> 0 Then
          r.Copy
          Set Ofs = r.Offset(RowsCount)
          Ofs.Resize(Ar(4) * RowsCount).Insert
          ErrNumber = Err.Number
        End If
      ElseIf Ar(1) <> "*" Then
        Set r = r.Offset(OfsCount).Resize(RowsCount)
        OfsCount = RowsCount
      End If
    End If
   
'    OfsCount = RowsCount
   
    If ErrNumber = 0 Then
      If Ar(2) = "" Then
        If Ar(3) = "" Or Ar(3) = "S" Then
          Set Ofs = r.Cells(1, 1)
          Ofs.Value = Ar(5)
          Ofs.TextToColumns DataType:=xlDelimited
        ElseIf Ar(3) = "V" Then
          Set Ofs = App.Range(Ar(5))
          OfsRowsCount = Ofs.Rows.Count
          If OfsRowsCount > RowsCount Then
            OfsCount = OfsRowsCount
            Set NewRng = r.Offset(RowsCount)
            NewRng.Resize(OfsRowsCount - RowsCount).Insert
          ElseIf OfsRowsCount < RowsCount Then
            OfsCount = OfsRowsCount
            Set NewRng = r.Offset(OfsRowsCount)
            NewRng.Resize(RowsCount - OfsRowsCount).Delete
          End If
          Ofs.Copy r
          If OfsCount <> RowsCount Then
            Set r = r.Resize(OfsCount)
          End If
        ElseIf Ar(3) = "M" Then
          Err.Clear
          MACROSNAME = "'" + App.ActiveWorkbook.Name + "'" + "!" + Ar(5)
          App.Run MACROSNAME, r
          If Err.Number <> 0 Then
            App.Run MACROSNAME
          End If
        End If
      Else
        If Ar(3) = "S" Then 'or InStr(1, Ar(5), Chr(9)) = 0 Then
          Ln = Ar(5)
          r.Replace Ar(2), Ln, xlPart, xlByRows, False
        ElseIf Ar(1) <> "*" And Ar(3) = "T" Then
          Set Ofs = r.Find(Ar(2))
          Set QTable = r.Worksheet.QueryTables.Add("TEXT;" + Ar(5), Ofs)
          QTable.AdjustColumnWidth = False
          QTable.RefreshStyle = False
          QTable.Refresh
          QTable.Delete
          fs.DeleteFile Ar(5) 'Value(1)
        ElseIf Ar(3) = "R" Then
          Set Ofs = r.Find(Ar(2))
          Ofs.Value = Ar(5)
          If Ofs.NumberFormat = "@" Then
            Ofs.TextToColumns DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, FieldInfo:=FldsInfo
          Else
            Ofs.TextToColumns DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone
          End If
        End If
      End If
     
      If Ar(3) = "D" Then
        App.Range(Ar(0)).Delete
      End If
    End If
   
    Err.Clear
  Loop
 
  Close #1
 
  If WITHOUT_OLE = "X" Then
    App.DisplayAlerts = True
    App.ScreenUpdating = True
   
    If PROTECT_WB = "X" Then
      Psw = Time
      For Each Sht In App.Worksheets
        Sht.Protect Psw, True, True, True
      Next
    End If
 
    App.ActiveWorkbook.Save
   
    If CLOSE_FORM <> "X" Then
      With App
        .DisplayAlerts = True
        .ScreenUpdating = True
        .Visible = True
      End With
    End If
 
    If PRINTDIALOG = "X" Then
      ResDialogPrint = App.Dialogs.Item(xlDialogPrint).Show
    End If
 
    If CLOSE_FORM = "X" Or _
       PRINTDIALOG = "X" Then
      App.Quit
    End If
  End If
End Sub

В новых версиях были оптимизации в макросах/формате промежуточного файла?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 103, 104, 105, 106, 107, 108, 109 ... 161  След.

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB