Текущее время: Ср, июл 23 2025, 16:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как отладить VBA макрос?
СообщениеДобавлено: Пн, окт 17 2005, 18:14 
Специалист
Специалист

Зарегистрирован:
Пт, мар 25 2005, 13:58
Сообщения: 216
Вот возникла проблема.
АБАП приложение использует класс SOFFICEINTEGRATION для заполнения Экселевского шаблона.
Я видоизменил этот шаблон и теперь в бэйсиковском коде хочу внеси изменения по его заполнению. Делаю отладку
и на 3-ей строке:

Code:
Dim HeadW As Object
  Set HeadW = ThisWorkbook.Container.Tables("tab_h_w").Table
  ThisWorkbook.ActiveSheet.Cells(2, 2).Value = HeadW.Cell(1, 1)
* tab_h_w - заполненная внутрення таблица


возникает ошибка: ' "1004" -Application-defined or object-defined error'

Все поля шаблона защищены от ввода, может в этом дело?
Подскажите, как нормально отладить?

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, окт 18 2005, 12:11 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, окт 18 2004, 12:27
Сообщения: 93
Проще всего после появления ошибки сохранить файл на диске (в нем уже будут выгружены данные) и вручную вызывать макрос, отлаживая его средствами редактора VBA.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Пн, июл 30 2012, 17:10 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Та же проблема.
Отдельно от SAP в выгруженном EXCEL макрос не работает - доступа к табличным данным нет. Есть ли какой нибудь способ запустить макрос автономно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 08:16 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Запустите макрос непосредственно из документа.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 08:47 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
hub2002 написал(а):
Запустите макрос непосредственно из документа.

Да вроде так и запускал, из сохраненной книги EXCEL.
Вот здесь выдает ошибку: Method 'Container' of object '_Workbook' failed
Code:
    ' Объект SAP R/3
    Set oContainer = ThisWorkbook.Container     <--
   
    ' Доступ к внутренней таблице
    Set it_all = oContainer.Tables("pers41").Table
...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 09:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
organmusic написал(а):
hub2002 написал(а):

Да вроде так и запускал, из сохраненной книги EXCEL.
Вот здесь выдает ошибку: Method 'Container' of object '_Workbook' failed

В сохраненной книге не получится потому что Container-а нет в таком режиме
по хорошему нужно вставить проверку на ошибку типа
Code:
On Error Resume Next
Set oContainer = ThisWorkbook.Container
If Err <> 0 Then
    Debug.Print Err.Description 'или какой-то другой обработчик, лучше всего в лог файл
    Exit Sub
End If
On Error GoTo 0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 09:33 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
То есть я так понял, без SAP, автономно такой макрос не отладить.
В сохраненной книге данные внутренних таблиц (it_all и др) отсутствуют - без SAP нет доступа к этим таблицам


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 10:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
organmusic написал(а):
То есть я так понял, без SAP, автономно такой макрос не отладить.
В сохраненной книге данные внутренних таблиц (it_all и др) отсутствуют - без SAP нет доступа к этим таблицам

да
Set oContainer = ThisWorkbook.Container это и есть как бы SAP, который открыл Excel
если Excel сам по себе открыт, то и контейнера у него нет
заводите в макросе лог-файл и пишите туда все что нужно
типа такого
Code:
Open "d:\log.txt" For Output As #1
Print #1, "message"
Close #1


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Вт, июл 31 2012, 12:13 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Вообще это очень неудобно.
Я сделал в конце концов так: выгружаю данные из внутренних таблиц в листы EXCEL. И в макросе читаю все уже из этих листов. В автономе данные беру сразу с этих листов.
Пришлось написать класс-эмулятор с теми же методами, что и класс внутр таблицы, который берет данные из листов EXCEL
По идее после отладки можно переключиться обратно на внутренние таблицы.


Последний раз редактировалось organmusic Ср, авг 01 2012, 08:33, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Ср, авг 01 2012, 08:31 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Code:
Set it_tab = ThisWorkbook.Container.Tables("it_tab").table

Вообще интересно что за объекты эти Table. Хинты на них не работают.
Как посмотреть класс, методы и свойства?
Можно ли в VBA самому, без SAP, создавать такие объекты?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Ср, авг 01 2012, 08:40 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
organmusic написал(а):
Вообще интересно что за объекты эти Table. Хинты на них не работают.
Как посмотреть класс, методы и свойства?
Можно ли в VBA самому, без SAP, создавать такие объекты?

не получится хинты
так как Container - runtime объект и на момент написания макроса про его методы и свойства ничего не известно
ну кроме стандартных методов Object


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Ср, авг 01 2012, 17:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
Коллеги, а как можно выгрузить из SAPа подобный файл, нашпигованный кодом VBA? Что-то в известных мне точках экспорта выгружаются только данные без макросов...

А поковыряться было бы интересно. Нашёл ссылку, где приводится пример такого кода: http://www.mrexcel.com/forum/showthread ... el-and-SAP и такой же, как мой, вопрос.

Спасибо заранее.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Чт, авг 02 2012, 12:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Gustav написал:
Коллеги, а как можно выгрузить из SAPа подобный файл, нашпигованный кодом VBA? Что-то в известных мне точках экспорта выгружаются только данные без макросов...

А поковыряться было бы интересно. Нашёл ссылку, где приводится пример такого кода: http://www.mrexcel.com/forum/showthread ... el-and-SAP и такой же, как мой, вопрос.

Спасибо заранее.


Code:
REPORT  zexmod.
INCLUDE ole2incl.

CONSTANTS vbext_ct_stdmodule TYPE i VALUE 1.

DATA application  TYPE ole2_object.
DATA workbooks  TYPE ole2_object.
DATA workbook  TYPE ole2_object.
DATA vbproject  TYPE ole2_object.
DATA vbcomponents TYPE ole2_object.
DATA vbcomponent TYPE ole2_object.
DATA codemodule TYPE ole2_object.

START-OF-SELECTION.
  IF application-header = space.
    CREATE OBJECT application 'EXCEL.APPLICATION'.
  ENDIF.

  GET PROPERTY OF
      application
      'Workbooks' = workbooks.
  CALL METHOD OF
      workbooks
      'Add'     = workbook.
  GET PROPERTY OF
      workbook
      'VBProject' = vbproject.
  GET PROPERTY OF
       vbproject
       'VBComponents' = vbcomponents.
  CALL METHOD OF
      vbcomponents
      'Add'        = vbcomponent
    EXPORTING
      #1           = vbext_ct_stdmodule.
  GET PROPERTY OF
     vbcomponent
     'CodeModule' = codemodule.
  SET PROPERTY OF
  codemodule
  'Name' = 'SapModule'.
  CALL METHOD OF
      codemodule
      'InsertLines'
    EXPORTING
      #1            = 1
      #2            = 'Sub HelloWorld()'.
  CALL METHOD OF
      codemodule
      'InsertLines'
    EXPORTING
      #1            = 2
      #2            = 'MsgBox "Hello World!"'.
  CALL METHOD OF
      codemodule
      'InsertLines'
    EXPORTING
      #1            = 3
      #2            = 'End Sub'.
*  SET PROPERTY OF application  'Visible' = 1.

  CALL METHOD OF
      workbook
      'SaveAs'
    EXPORTING
      #1       = 'd:\vba.xls'.
  CALL METHOD OF
      application
      'Quit'.

END-OF-SELECTION.
  FREE OBJECT: application, workbooks, workbook,
               vbproject,vbcomponents,vbcomponent,codemodule.

только в Excel нужно включать птичку Сервис-Макрос-Безопасность-Надежные издатели-Доверять доступ к Visual Basic Project
а это лазейка для макровирусов
по идее ее тоже можно устанавливать и снимать программно, только найти свойство нужное
ну и OLE отлаживать это наказание натуральное


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Чт, авг 02 2012, 12:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
MantiCore1977 написал:
только в Excel нужно включать птичку Сервис-Макрос-Безопасность-Надежные издатели-Доверять доступ к Visual Basic Project
а это лазейка для макровирусов
по идее ее тоже можно устанавливать и снимать программно, только найти свойство нужное

MantiCore1977, спасибо за Ваш ответ, но это - в принципе - я уже знаю и умею: http://www.axforum.info/forums/showthread.php?t=12485

наверное, я не очень корректно задал свой вопрос, меня же интересует, В КАКОМ МЕСТЕ (местАХ) в SAPе генерируется (выгружается) код VBA, подобный следующему (беру фрагмент из своей ссылки выше):
Code:
'*******************************************************************************
'   Receive row/column-oriented formats
'*******************************************************************************
Public Sub Workbook_receiveRCFormats()

  Dim SAPTable As Object
  Dim SAPTableRow As Object
 
  Dim SAPRCFormat As SAPRCFormat
 
  Dim Index As Long

  Dim NoItems As Long
  Dim I As Long


  Set SAPContainer = ThisWorkbook.Container
  Set SAPTable = SAPContainer.tables("RC_FORMATS").Table
  For Each SAPTableRow In SAPTable.Rows
    Index = SAPTableRow("INDEX")
    NoItems = SAPRCFormats.count
    If Index <= NoItems Then
      Set SAPRCFormat = SAPRCFormats.item(Index)
    Else
      For I = NoItems + 1 To Index
        Set SAPRCFormat = New SAPRCFormat
        SAPRCFormats.add SAPRCFormat
      Next I
    End If
    SAPRCFormat.setFormat SAPTableRow
  Next SAPTableRow

End Sub

Т.е. я хочу увидеть (получить) "фирменный" саповский код VBA.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как отладить VBA макрос?
СообщениеДобавлено: Чт, авг 02 2012, 12:52 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Цитата:
Т.е. я хочу увидеть (получить) "фирменный" саповский код VBA.

какая транзакция его генерит?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


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

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


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

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