Откройте файл Excel и вызовите макрос из PowerBuilder - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь вызвать макрос с определенными параметрами из PowerBuilder, но он не работает.

Это код, который я использую:

OLEObject ole_object
ole_object = CREATE OLEObject

string ls_reportInPath = "C:\Prevalidador_DIAN_Tributario_2011_v1.4\Prevalidador.xls"
string ls_macroname = "Prevalidador.xls!modXML.cargarXML_General"
string ls_xml = "C:\Users\...\Desktop\010100107201100000001.xml"
string ls_file = "C:\Users\...\Desktop\excel_file.xls"

IF ole_object.ConnectToNewObject("excel.application") = 0 THEN
    ole_object.Object.Application.DisplayAlerts = "False"
    ole_object.workbooks.Open(ls_reportInPath) //Open the .xls file
Else
    MessageBox('OLE Error','Unable to start an OLE server process!',Exclamation!)
END IF

ole_object.Object.Application.Run (ls_macroname)

ole_object.Application.Quit()
ole_object.DisconnectObject()
DESTROY ole_object

Также я бы хотел показать лист Excel пользователю.

Это ошибка, которую я получаю:

enter image description here

Ошибка общая для двух строк:

ole_object.Object.Application.DisplayAlerts = "False"
ole_object.Object.Application.Run (ls_macroname)

Ответы [ 3 ]

1 голос
/ 13 января 2012

Excel может ошибаться при выполнении текста приведения -> bool?

У меня есть некоторый код здесь, где мы делаем следующее, не используя Object btw:

OLEObject iole_xlapp
iole_xlapp = CREATE OLEObject
li_rtn = iole_xlapp.ConnectToNewObject( "excel.application" )
//...
iole_xlapp.Application.DisplayAlerts = True
1 голос
/ 22 апреля 2013

Вместо "ole_object.Object.Application.Run (ls_macroname)",

используйте

ole_object.Application.Run (ls_macroname)

, это будет работать.

0 голосов
/ 13 января 2012

Это выстрел в темноте, но я бы в нижнем регистре обозначал O в «Объекте».

Удачи,

Терри.

...