使用 Progress 4GL 将 Excel active sheet 复制到工作簿的末尾

Copying Excel active sheet to the end of the workbook with Progress 4GL

我正在尝试将 Excel 活动 sheet 复制到 Progress 4GL 工作簿的末尾。这是我到目前为止尝试过的。

DEFINE VARIABLE chExcelApplication   AS COM-HANDLE.    /* com-handle for the application */
DEFINE VARIABLE chWorkbook           AS COM-HANDLE.    /* com-handle for the workbook */
DEFINE VARIABLE iSheetCount          AS INTEGER.       /* variable to track the current sheet count */

CREATE "Excel.Application" chExcelApplication.
chWorkbook = chExcelApplication:Workbooks:Open("C:\tmp\test.xlsx").

iSheetCount = chWorkbook:sheets:COUNT.

chWorkbook:Sheets(1):COPY:after = chWorkbook:Sheets(iSheetCount). 

这是相关的 VBA 代码:

Sheets(1).Copy After:=Sheets(Sheets.Count)

iSheetCount 的快速 return 本身已经给出了正确数量的工作 sheet。如何将 VBA 上的 Copy After 短语变成 Progress 4GL?

这纯粹是猜测,我不使用 Progress 4GL,但也许可以考虑 Worksheet.Copy 的另一个 VBA format/syntax,它没有命名参数但暗示了它从它在命令中的位置:sheet.copy <before>,<after>:

Sheets(1).Copy , Sheets(Sheets.Count)     'VBA

直接翻译 (完全基于您问题的代码,而不是基于我的任何实际知识 - 我必须强调!) 因此可能是:

chWorkbook:Sheets(1):COPY ,chWorkbook:Sheets(iSheetCount).

否则..可能是这样的:

chWorkbook:Sheets(1):COPY(,chWorkbook:Sheets(iSheetCount)).

更新:

OP 确认以下有效:

chWorkbook:Sheets(1):COPY(,chWorkbook:Sheets(iSheetCount)).

/* 在“hWorkbook:sheets:COUNT”的右边,新建一个sheet */

hWorksheet = hExcelApplication:sheets:item(hWorkbook:sheets:COUNT).

hWorkbook:Worksheets:add(, hWorkSheet)。 /* 在 , 之后保留 SPACE */

hWorksheet = hExcelApplication:sheets:item(hWorkbook:sheets:COUNT).