Текущее время: Сб, май 10 2025, 22:24

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 58, 59, 60, 61, 62, 63, 64 ... 161  След.
Автор Сообщение
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Вт, сен 27 2011, 14:35 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Вот тут всё лежит:

http://lj.vladimirovich.net/lj11/sapboard/

doc_template2.docx - шаблон
ZBW_DOC-153034.docx - то, что вышло
IT_VALUES.xls - содержимое таблицы

то есть, всё работает, но видно что стиль у кусков был "заголовок" а стал "обычный".

_________________
Ян Владимирович,
http://www.vladimirovich.net


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

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
И, вдогонку - я не понял, почему так, но когда-то получается, а когда-то нет сделать так, чтобы нумерация списка была.

То есть, сейчас нумерация может не продолжаться:

1
1.1
1.1
1.1.1
1

Вместо

1
1.1.
1.2.
1.2.1
2

_________________
Ян Владимирович,
http://www.vladimirovich.net


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Yanvladimirovich написал(а):
Вот тут всё лежит:

http://lj.vladimirovich.net/lj11/sapboard/

doc_template2.docx - шаблон
ZBW_DOC-153034.docx - то, что вышло
IT_VALUES.xls - содержимое таблицы

то есть, всё работает, но видно что стиль у кусков был "заголовок" а стал "обычный".

Действительно, есть такой косяк. Похоже это свойство функции PasteAndFormat, которой я заменил обычный Paste, чтобы корректно вложенные таблицы работали. Пробую разобраться.

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


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

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

http://lj.vladimirovich.net/lj11/sapboard/

doc_template2.docx - шаблон
ZBW_DOC-153034.docx - то, что вышло
IT_VALUES.xls - содержимое таблицы

то есть, всё работает, но видно что стиль у кусков был "заголовок" а стал "обычный".

Действительно, есть такой косяк. Похоже это свойство функции PasteAndFormat, которой я заменил обычный Paste, чтобы корректно вложенные таблицы работали. Пробую разобраться.

Если при вызове VBA-функции "PasteAndFormat" передавать параметр = 24, то вроде работает нормально. По крайней мере работают Ваш, все мои примеры и тот пример с вложенными таблицами, который мне присылал другой человек.
Можете попробовать поменять параметр сами, найти в подпрограмме FillWordForm и макросе ZWWW_MACROS_WORD.

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


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

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Я вообще в замешательстве. Вот она, рыба моей мечты,

Code:
Include LZWWWFORMF01

(...)

Call method of Range 'PasteAndFormat' exporting #1 = 16.


Она там два раза встречается, верно? Ну, я заменил 16 на 24. Нет эффекта. Потом посмотрел ссылку http://www.bettersolutions.com/word/WRV283/LY418651611.htm. Заменил на wdFormatPlainText, то есть, на число нужное, но нет эффекта.

Потом взял, и просто закомментировал эту строчку. Активирую инклуд, перезапускаю свою программу - и всё по прежнему работает, как оно работало до этого.

Блин, что я делаю не так???

_________________
Ян Владимирович,
http://www.vladimirovich.net


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Вы невнимательны, измените макрос.
В принципе я мог бы выслать обновленную версию, но в ней много других изменений, могут быть другие косяки.

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


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

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Так, разобрался. Действительно, нужно править макрос в шаблоне ZWWW_MACROS_WORD.doc.

В моём случае сработало всё тогда, когда я просто вернул функцию "Paste". wdPasteDefault и wdListCombineWithExistingList не сработали совсем так как нужно было.

В общем, "танцы с бубном", но работает.

Если говорить об универсальном решении, то прошу такой feature request. Можно сделать, в следующей версии, чтобы метод (в том числе, возвращение к стандартному "paste") можно было задавать прямо через SetVal. Может, через "VAL_TYPE"? Например, вместо 'V' использовать какие-то другие буквы.

_________________
Ян Владимирович,
http://www.vladimirovich.net


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

Зарегистрирован:
Ср, дек 22 2010, 19:49
Сообщения: 114
Дд! Для информации: при установленном Google Desktop Search 5.9.1005.12335 (последняя версия) зависает выгрузка в Excel с макросами - проверял на нескольких машинах. В итоге, поменял на Yandex Desktop Search.

_________________
Человек готов работать 24 часа в сутки, лишь бы ничего не делать.


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
NeMurometz написал(а):
Дд! Для информации: при установленном Google Desktop Search 5.9.1005.12335 (последняя версия) зависает выгрузка в Excel с макросами - проверял на нескольких машинах. В итоге, поменял на Yandex Desktop Search.

О как! Любопытно, надо будет потестить.

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


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

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
А такой вопрос - ограничение в 255 символов на текст можно обойти?

_________________
Ян Владимирович,
http://www.vladimirovich.net


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Yanvladimirovich написал(а):
А такой вопрос - ограничение в 255 символов на текст можно обойти?

Это ограничение функции поиск/замена самого Excel. Можно поместить в ячейку, например, 3 метки - [1][2][3], и выводить частями. Но у Excel есть еще и ограничение на длину текста в ячейке, кажется около 900 символов.

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


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

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
Parazit написал:
Но у Excel есть еще и ограничение на длину текста в ячейке, кажется около 900 символов.

В ячейку Excel через свойство Value можно ввести 32767 символов. Можно попытаться и больше - ошибки не будет, но строка будет обрезана до 32767.

Следующий репорт прогонялся для Excel 2007:
Code:
REPORT z...

TYPE-POOLS ole2.

DATA xlapp          TYPE ole2_object.
DATA wbks           TYPE ole2_object.
DATA rng            TYPE ole2_object.
DATA longlongstring TYPE string.

START-OF-SELECTION.

  "формирование длинной-предлиннной строки - 32767 символов
  DO 3276 TIMES.
    CONCATENATE longlongstring `123456789 ` INTO longlongstring.
  ENDDO.
  CONCATENATE longlongstring `1234567` INTO longlongstring.

  CREATE OBJECT xlapp 'Excel.Application'.
  SET PROPERTY OF xlapp 'Visible' = 1.

  CALL METHOD OF xlapp 'Workbooks' = wbks.
  CALL METHOD OF wbks 'Add'.

  CALL METHOD OF xlapp 'Range' = rng
    EXPORTING #1 = 'A1'.
  SET PROPERTY OF rng 'Value' = longlongstring.

  CALL METHOD OF xlapp 'Range' = rng
    EXPORTING #1 = 'B1'.
  SET PROPERTY OF rng 'Formula' = '=LEN(A1)'.

Причем, это не с 2007 началось, по-моему, в XP уже тоже можно было такое гигантское кол-во вводить.

Теперь про ограничение "около 900". Оно возникает при программной установке значения диапазона ячеек путем присваивания ему вариантного массива, т.е., например, при выполнении VBA-операции типа Range("A1:D1").Value = aValues, где aValues - массив (As Variant) из четырех текстовых строк, хотя бы одна из которых превышает критическое по длине значение. Это значение - разное для разных версий Excel:

Excel 2000 - 1823 символа, больше - ошибка,
Excel 2003 - 911 (подозреваю, что двухкратное уменьшение связано с Юникодом),
Excel 2007 - 8203.

Можно предположить, что операция "Текст по столбцам", которая, как я понял, активно применена в разработке Parazit'а, где-то внутри себя использует подобное присваивание значения массива значению диапазона, откуда и возникает такое ограничение.

Почитать об этом можно по следующим ссылкам (там имеются наглядные примеры на VBA):
911 characters in Excel 2003 - http://support.microsoft.com/kb/818808/en-us
8203 characters in Excel 2007 - http://support.microsoft.com/kb/832136/en-us

Таким образом, если нужно в ячейку ввести длинную-предлинную строку, то надо как-то получить хэндл (range) ячейки, после чего через OLE2 в ABAP или VBA-макросом засунуть туда желаемый текст. Заметьте, OLE2, как видно из приведенного репорта, никаких ограничений на длину передаваемой строки здесь не устанавливает.

P.S. Хе-хе! Однако, этот мой ответ - 911-й в теме. Мистика! :)

P.S.2. Ну, и раз уж зацепились за длину значения в ячейке, то уместно будет упомянуть про максимальную длину формулы в ней же. Она, начиная с Excel 2007, составляет 8192 символа (вместо 1024 символов в версии 2003).

Попутно, может быть также интересным, что в 2007 максимальное количество аргументов функции стало 255, т.е. в ячейку можно ввести формулу, например, =SUM(1,2,3...254,255). До 2007 - можно было только 30 аргументов, т.е. =SUM(1,2,3...29,30). Но, в 2007, несмотря на 255 аргументов в функции ячейки, при программировании с использованием объекта WorksheetFunction число аргументов осталось тем же - 30: Application.WorksheetFunction.Sum(arg1...arg30). Слова "к сожалению" по этому поводу говорить не будем, ибо вряд ли это так критично при программировании (если кто-то вообще пользуется функцией WorksheetFunction.Sum в коде).

Различные технические характеристики Excel 2007 можно увидеть здесь: http://office.microsoft.com/ru-ru/excel ... 73849.aspx.


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Gustav написал:
Parazit написал:
Но у Excel есть еще и ограничение на длину текста в ячейке, кажется около 900 символов.

В ячейку Excel через свойство Value можно ввести 32767 символов. Можно попытаться и больше - ошибки не будет, но строка будет обрезана до 32767.
...Теперь про ограничение "около 900". Оно возникает при программной установке значения диапазона ячеек путем присваивания ему вариантного массива...

Спасибо за подробную информацию. Однако массивы в моем коде не используются. Ограничение 911 символов на ячейку срабатывает еще для функции поиска/замены (cells.replace). Эта функция активно используется моей разработкой, особенно при построении табличной формы. Если не использовать её (FIND_TEXT=<пусто>), то ограничения 911 нет. Но такой вариант годится только для вывода одиночных ячеек и не подходит при построении таблиц - так устроен мой алгоритм.

В общем я отношу такие ограничения к косякам Excel, у него полно и других подобных (см.ниже). Соответственно, борьба с ними - дело рук самой MS. Пока удается обходить их малой кровью, затачивая под них шаблоны.

p.s.
Пример косяка в Excel. Запустить этот макрос удастся только один раз! Excel не позволяет копировать лист больше 255 раз, если на нем есть именованная область. Без нее, сколько угодно! :)
Code:
Sub m1()
  Application.DisplayAlerts = False
  ActiveSheet.Range("A1").Name = "BlaBla"
  For i = 1 To 256
    ActiveSheet.Copy after:=ActiveSheet
    ActiveSheet.Delete
  Next
End Sub

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


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

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
Parazit написал:
Excel не позволяет копировать лист больше 255 раз, если на нем есть именованная область.

Попробовал. У меня не все так печально получилось. Я в Вашем цикле поставил верхний предел в 20 тысяч. Так вот, Excel 2003 свалился после 3923 успешных итераций (всяко поболее 255), а 2007 - дык вообще после 10912.

Вот здесь - http://support.microsoft.com/kb/210684/ru - говорят, что сохраняться и переоткрываться нужно через некоторое кол-во итераций и пример дают с сохранением через каждые 100. По аналогии обернул Ваш примерчик в их идею (с сохранением через каждые 2 тыщи) - ни 2003, ни 2007 не умерли после 40 тысяч итераций (больше уже было лень ставить):
Code:
Sub m1_v2()

    Dim i As Long
    Dim wbk As Workbook
    Dim filename As String
 
    filename = "C:\test3.xlsx"
   
    On Error GoTo aaa
 
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
   
    Set wbk = Application.Workbooks.Add
    wbk.ActiveSheet.Range("A1").Name = "BlaBla"
   
    wbk.SaveAs filename
   
    For i = 1 To 40000
   
        wbk.ActiveSheet.Copy after:=wbk.ActiveSheet
        wbk.ActiveSheet.Delete
       
        If i Mod 2000 = 0 Then       
           wbk.Close SaveChanges:=True
           Set wbk = Nothing
           Set wbk = Application.Workbooks.Open(filename)           
        End If
       
        If i Mod 100 = 0 Then
            Debug.Print i
        End If
    Next
 
aaa:
    Debug.Print i
    Debug.Print Err.Description
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
 
End Sub


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ФМ для выгрузки данных в WORD, EXCEL
СообщениеДобавлено: Чт, окт 06 2011, 13:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Gustav написал:
Parazit написал:
Excel не позволяет копировать лист больше 255 раз, если на нем есть именованная область.

Попробовал. У меня не все так печально получилось. Я в Вашем цикле поставил верхний предел в 20 тысяч. Так вот, Excel 2003 свалился после 3923 успешных итераций (всяко поболее 255), а 2007 - дык вообще после 10912. ...

Ммм... Для Excel 2003 я эту багу наблюдаю в течение нескольких лет на разных машинах в разных организациях. Для других не тестил, поскольку при разработке отчетов стараюсь соблюдать совместимость с 2003-м, чтобы у пользователей не было проблем.
Возможно у вас изначально несколько листов, я макрос писал наспех, вероятно он в листах запутался и копировал лист без именованной области. Оставьте 1 лист, остальные удалите.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2409 ]  На страницу Пред.  1 ... 58, 59, 60, 61, 62, 63, 64 ... 161  След.

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


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

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


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

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