Таким образом, мы используем надстройку под названием «Data Transfer Excel Add-In» для импорта данных из серии IBMi непосредственно в электронные таблицы. Я делаю это достаточно регулярно, поэтому я создал макросы для этого процесса; однако, нет никакого усовершенствованного макро-процесса, чтобы сделать это. Я провел бесчисленные часы исследований и попыток выполнить инструкции на веб-странице IBM о создании временной таблицы biff8 и копировании данных в буфер обмена и их импорте в качестве последнего шага, но это не было действительно эффективным решением, и оно получило немного слишком сложный для моего уровня квалификации.
Из-за отсутствия доступных элегантных решений я прибег к методу грубых sendkeys, чтобы использовать ярлыки для ручного доступа к ленте, и это работает на удивление хорошо (я понимаю проблемы с sendkeys, которые уже использовались в качестве последнего средства). Это работает для решения моей первоначальной проблемы, но всякий раз, когда я делаю это, он должен запускаться в конце любого кода, так как любое последующее кодирование всегда будет создавать проблемы. Поэтому, если я попытаюсь импортировать запрос в ячейку a5, а затем переместиться на sheet2 после импорта, он сначала переместится на sheet2 и импортирует, а иногда и вообще не импортирует. Мне было интересно, если есть способ прочитать состояние приложения, подобное application.CalculationState, который будет применяться к надстройкам. По какой-то причине состояние расчета не регистрируется с помощью этого метода. Я пробовал application.wait, и это, кажется, не имеет значения, когда импорт используется, он ДОЛЖЕН быть последним в коде, и я не могу обойти это.
Я поставил пример кода импорта запроса, если это поможет. Я не могу прикрепить скриншот, но после импорта запроса появляется всплывающее окно под названием «IBM i Access Data Transfer», которое говорит: «Получение информации из IBM i. Пожалуйста, подождите ....» *
код:
SendKeys "%x" 'brings up add-ins
SendKeys "r" 'selects add-in option
SendKeys "~"
SendKeys "~"
SendKeys "jplibr/gugmolist" 'types query library and name
SendKeys "~"
SendKeys "~"
SendKeys "~"
SendKeys "{NUMLOCK}" 'fixes stupid numlock/sendkeys glitch
Я пробовал:
если application.calculationstate = x1calculating затем
Application.Wait (Now + TimeValue ("0:00:01"))
конец если
также использовал x1pending безуспешно
Спасибо за вашу помощь, извините, если это не очень кратко