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

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


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

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


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

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