SAPфорум.RU
https://www.sapboard.ru/forum/

XLSX Workbench
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=86294
Страница 7 из 15

Автор:  Ayda}{ar [ Чт, апр 20 2017, 12:47 ]
Заголовок сообщения:  Re: XLSX Workbench

Бородин Игорь написал(а):
Пока не планирую и даже не знаю, как это увязать с концепцией. Вот, например, Вы присвоили диапазону A1:A5 имя NAME, и поместили этот паттерн в цикл. В результирующей форме будет, предположим, 10 таких областей (строк) - и как все они должны называться? ведь имя-то должно быть уникальным. Можно, конечно, "растянуть" диапазон NAME, чтобы он охватывал все получившиеся строки... а если они идут не подряд, а чередуются с другими паттернами, тогда как ? Короче, это вопрос не технический, а концептуальный.


На вскидку, я думал, что такое можно реализовать через добавление нового элемента структуры формуляра, что-то типа Variable со свойством Диапазон ячеек или формула. И сохранять в том же виде, как в XML в тэге <NAME></NAME>. Могу ошибаться, но на первый взгляд, реализация этого не должна быть очень трудоемкой.

Бородин Игорь написал(а):
Если Вам не принципиально выполнение в фоне, то можете реализовать всё, что угодно посредством VBA (VBScript) пост-обработки .

К сожалению, как раз критично. У нас уже есть реализация через ZWWW с использованием макросов, теперь изучаем другие существующие инструменты.

Автор:  Бородин Игорь [ Чт, апр 20 2017, 13:38 ]
Заголовок сообщения:  Re: XLSX Workbench

Ayda}{ar написал(а):
На вскидку, я думал, что такое можно реализовать через добавление нового элемента структуры формуляра
И всё-таки, если поместить эту переменную в цикл, будет дублирование имени диапазона -->> неконсистентность файла.
Я бы мог просто переносить эти именованные диапазоны "как есть"... В общем, я подумаю над этим, возможно реализую это в будущем.

Автор:  Ayda}{ar [ Чт, апр 20 2017, 14:07 ]
Заголовок сообщения:  Re: XLSX Workbench

Бородин Игорь написал(а):
... В общем, я подумаю над этим, возможно реализую это в будущем.


Надеюсь, все получится)
В любом случае, спасибо за ответы.

Автор:  aivengo [ Ср, май 24 2017, 00:31 ]
Заголовок сообщения:  Re: XLSX Workbench

Игорь, помогите пожалуйста, наделал кучу отчетов с использованием вашей разработки, всем все нравиться, спасибо.
Но вот настала пора прикрутить макросы, которые раскрасят цвет шрифта и строки.

Имеется рабочий макрос который раскрашивает строчки если его объявить и запустить в excel

Code:
' раскрашивание слова новая редакция в красный цвет
With Worksheets("Sheet1").Cells
    Set c = .Find(What:="новая редакция", LookIn:=xlValues)
    If Not c Is Nothing Then
     FirstAddress = c.Address
        Do
            c.Characters(Start:=InStr(c.Text, "новая редакция"), Length:=Len("новая редакция")).Font.Color = -16776961
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> FirstAddress
    End If
End With

' раскрашивание строки в красный цвет где есть слово исключено
With Worksheets("Sheet1").Cells
    Set c = .Find(What:="исключено", LookIn:=xlValues)
    If Not c Is Nothing Then
      FirstAddress = c.Address
        Do
          Rows(c.Row).Select
          With Selection.Rows.Font
             .Color = -16776961
             .TintAndShade = 0
          End With
'          c.Value = "исключено"
          Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> FirstAddress
    End If
End With


Помогите пожалуйста его интерпретировать в рабочий код, с этим просто беда какая то((
С более менее легкими макросами у меня получилось разобраться

Code:
  Set MySheet = XLWB_ActiveWorkbook.ActiveSheet
  MySheet.Activate
  MySheet.Cells.Replace "$1", Chr(10)


Еще подскажите, имеется ли возможность в формуляре сохранить макросы для целей их ручного запуска пользователями? Дело в том что в шаблоне у меня не получается его сохранить. Есть какие то нюансы?

Автор:  Бородин Игорь [ Ср, май 24 2017, 12:03 ]
Заголовок сообщения:  Re: XLSX Workbench

aivengo написал(а):
Имеется рабочий макрос который раскрашивает строчки если его объявить и запустить в excel
Обратите внимание, что VBScript не поддерживает именованные параметры. По этому, вместо:
Code:
c.Characters(Start:=InStr(c.Text, "новая редакция"), Length:=Len("новая редакция")).Font.Color = -16776961
должно быть
Code:
c.Characters(InStr(c.Text, "новая редакция"), Len("новая редакция")).Font.Color = -16776961
Ещё один нюанс в том, чтобы вместо Worksheets("Sheet1").Cells должно быть XLWB_ActiveWorkbook.Worksheets("Sheet1").Cells

Обо всем этом сказано здесь.
А вот Ваш код, адаптированный к VBScript:
Code:
With XLWB_ActiveWorkbook.Worksheets("Sheet1").Cells
' раскрашивание слова новая редакция в красный цвет
  Set c = .Find("новая редакция")
  If Not c Is Nothing Then
    FirstAddress = c.Address
      Do
          c.Characters(InStr(c.Text, "новая редакция"), Len("новая редакция")).Font.Color = -16776961
          Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> FirstAddress
  End If

' раскрашивание строки в красный цвет где есть слово исключено
  Set c = .Find("исключено")
  If Not c Is Nothing Then
    FirstAddress = c.Address
      Do
        With c.EntireRow.Interior '.Font
           .Color = -16776961
           .TintAndShade = 0
        End With
        Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> FirstAddress
  End If
End With

aivengo написал(а):
имеется ли возможность в формуляре сохранить макросы для целей их ручного запуска пользователями?
Нет, формат XLSX не поддерживает макросы. Для макросов существует другой формат файла - XLSM, но в данный момент он не поддерживается.

Автор:  Кодер [ Ср, май 24 2017, 12:22 ]
Заголовок сообщения:  Re: XLSX Workbench

Бородин Игорь написал(а):
Для макросов существует другой формат файла - XLSM, но в данный момент он не поддерживается.

Хм. А разве не получится, если загрузить вручную шаблон с xlsm форматом, в котором самому набросать макросы и навесить их на событие в книге?
Просто в какой-то старой версии вашей тулзы я такое тестировал - вполне работало. Но было это до того, как вы внедрили поддержку макросов.

Вообще, для раскраски\оформления часто получается использовать условное форматирование+дополнительный скрытый столбец. В скрытом столбце указывается строка флагов форматирования, а в условном форматировании задается формула анализа для скрытого столбца.

Автор:  Бородин Игорь [ Ср, май 24 2017, 12:34 ]
Заголовок сообщения:  Re: XLSX Workbench

Кодер написал(а):
Хм. А разве не получится, если загрузить вручную шаблон с xlsm форматом, в котором самому набросать макросы и навесить их на событие в книге?
Эта какая-то недокументированная возможность, о которой я сам не знал :oops: , спасибо что рассказали. Поддержка XLSM - это ещё одна всеми требуемая фича, которую я когда-нибудь реализую (как будет время).

Автор:  aivengo [ Ср, май 24 2017, 13:32 ]
Заголовок сообщения:  Re: XLSX Workbench

Игорь огромное спасибо за ответ, и в особенности за оперативность))

Присоединюсь к предыдущему автору с поддержкой VBA макросов.
Дело в том что большинство специалистов в виду инструментария ZWWW и прочих средств привыкли работать с макросами а не скриптами, изучение синтаксиса и особенностей VBScript требует времени и дополнительного изучения, да и их сложно отлаживать.
Кроме того встречаются такие выгрузки в которых конечные пользователи, не брезгуют запускать макросы самостоятельно по принципу: выгрузили отчет, запустили скрипт 1 для Марии Ивановны которая любит видеть все в розовых оттенках, запустили скрипт 2 для Иван Ивановича который предпочитает серые тона)) VBA макросы в этом отношение значительно все упрощают, было бы замечательно если бы их можно было сохранять в шаблоне.
Да и в целом отлаживать, поддерживать VBA макросы гораздо проще...

Автор:  Toni [ Чт, май 25 2017, 18:59 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день Игорь!

Подскажите пожалуйста возможно ли реализовать следущую структуру
Изображение

Пытаюсь в данный момент сделай простейший пример , но он почему все субстроки рисует после все впереди идущих, хотя должен выводить их в COL2
Изображение

Автор:  Бородин Игорь [ Чт, май 25 2017, 22:23 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день!
Вы делаете через Циклы+Паттерны? Так тоже можно, но неоправданно сложно.
Но лучше для вывода таблицы использовать компонент Грид, который позволяет сделать это в несколько кликов. Он автоматически мерджит ячейки. Пример можете посмотреть здесь.

Автор:  Бородин Игорь [ Пн, май 29 2017, 19:51 ]
Заголовок сообщения:  Re: XLSX Workbench

Готова новая версия 4.04:
- Поддержка формата .XLSM, содержащего VBA-макросы. Подробнее здесь.
- Возможность задания имени для диапазона ячеек (по просьбе Ayda}{ar ). Подробнее здесь.

Автор:  ghost [ Пн, дек 18 2017, 15:48 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день, Игорь.
Впервые использовал вашу разработку, все очень удобно, так что отдельное Спасибо :pivo:
Столкнулся с небольшим багом: когда включен автободбор высоты, почему то активной становилась последняя ячейка страницы.
Покопавшись в коде нашел следующую ошибку :
Code:
  METHOD postpr_vbs_autofit .
....

*         restore cell selection
          r_ole->r_spreadsheet->[b]get_selection[/b](
                IMPORTING top     = lv_selection_top
                          left    = lv_selection_left
                          rows    = lv_selection_rows
                          columns = lv_selection_columns ) .

....

  ENDMETHOD .                    "postpr_vbs_autofit


вместо get_selection должен быть вызов метода set_selection для восстановления последней активной ячейки

С уважением,
Руслан

Автор:  Бородин Игорь [ Ср, дек 20 2017, 16:05 ]
Заголовок сообщения:  Re: XLSX Workbench

Руслан, добрый день. Спасибо Вам за обнаруженную ошибку! Я обновил версию. В ней, помимо других доработок, содержится и это исправление.

Автор:  ksn [ Пт, дек 22 2017, 10:00 ]
Заголовок сообщения:  Re: XLSX Workbench

Добрый день, Игорь. Начал использовать вашу разработку. Все удобно. У меня вопрос к Вам! Есть стандарный бланк в котором таблица с 5-строк и 10-cтолбцов и требуется занести данные в этот бланк ! Это возможно реализовать в Вашей разработке?

Автор:  Бородин Игорь [ Пт, дек 22 2017, 10:18 ]
Заголовок сообщения:  Re: XLSX Workbench

ksn написал:
Это возможно реализовать в Вашей разработке?
Добрый день! Конечно, возможно, для этого она и создана. Вот пример типичного бланка с таблицей. Спрашивайте, если что-то будет не понятно.

Страница 7 из 15 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/