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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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