1. Ruth Spradlin
  2. PowerBuilder
  3. Monday, 3 April 2023 19:53 PM UTC

I have some code that creates an excel spreadsheet using a dynamic ole object in the code of a non visual object.  It produces a .xls file.  The users want to output a .xlsx file because they are getting dialog boxes from a compatibliliy check that says there will be minor loss of fidelity.

My issue is that the code for the saveas for the excel file seems to be wrong.  The only code that I can find that has more than the filename for the parameter is for a graph, not an ole.  Yet this seems to work.  I can't figure out how to change it to output the .xlsx file though.  If I change the file type in the filename, it either gives me an error, or just doesn't produce the file.  I see that there are two different excel type to choose from if you place an ole on a window, but I can't find anything about the way this is created.  Also, a parameter is being set for checkcompatibility to False, but it seem to check anyway.  in the saveas parameters, the xiExcel8 variable is set to 56.  I see other xiExcel.. constants set up with different values, but non of them seem to work.

 

I have tried just changing the extension from .xls to .xlsx in the filename.  This produces a file, but it doesn't open.  It says it is corrupt.

I have tried changing the xiExcel value, but I either get an error, or it doesn't produce a file.

I have tried changing the saveas parameters to just the filename as the powerscript says to do, but I get a weird error about can't assign a a binary variable from any type variable.

 

I am stumped at this point.  Any help is appreciated.

 

OleObject iole_ole

this.iole_ole = CREATE OleObject

IF this.iole_ole.ConnectToNewObject( 'excel.application' ) = 0 THEN

   Of_populate()

as_file = this.is_path + ls_sch_name + ".xls"

this.iole_ole.Application.ActiveWorkbook.CheckCompatibility = "FALSE"

this.iole_ole.Application.ActiveWorkbook.SaveAs( as_file, xlExcel8, "", "", FALSE, FALSE )

Ruth Spradlin Accepted Answer Pending Moderation
  1. Tuesday, 4 April 2023 12:59 PM UTC
  2. PowerBuilder
  3. # 1

The 51 worked.  Thanks.

Comment
  1. John Fauss
  2. Tuesday, 4 April 2023 13:06 PM UTC
That is terrific news, Ruth. Thank you for letting us know. Would you please take a moment and designate the question as resolved, marking Mark's response as the answer? Many thanks!
  1. Helpful
  1. Mark Goldsmith
  2. Tuesday, 4 April 2023 13:54 PM UTC
You're welcome Ruth, glad to hear that worked for you!
  1. Helpful
There are no comments made yet.
Mark Goldsmith Accepted Answer Pending Moderation
  1. Monday, 3 April 2023 22:12 PM UTC
  2. PowerBuilder
  3. # 2

HI Ruth,

xlExcel8 (56) is for an .xls file type. Have you tried 51 yet? This is the default Excel Workbook format for an .xlsx file type.

HTH...regards,

Mark

Comment
  1. John Fauss
  2. Monday, 3 April 2023 22:39 PM UTC
Spot on, Mark!

@Ruth - Here is a link to the xlFileFormat enumeration (the 2nd argument): https://learn.microsoft.com/en-us/office/vba/api/excel.xlfileformat

You'll see 56 is xlExcel8, file extension .xls, and 51 is xlWorksheetDefault, file extension .xlsx

  1. Helpful 3
  1. Mark Goldsmith
  2. Monday, 3 April 2023 23:28 PM UTC
Thanks John and thanks for providing the link!
  1. Helpful
There are no comments made yet.
Ruth Spradlin Accepted Answer Pending Moderation
  1. Monday, 3 April 2023 20:51 PM UTC
  2. PowerBuilder
  3. # 3

2017 R3

Comment
There are no comments made yet.
John Fauss Accepted Answer Pending Moderation
  1. Monday, 3 April 2023 20:21 PM UTC
  2. PowerBuilder
  3. # 4

What version/release/build of PowerBuilder are you using?

Comment
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.