Touch написал(а):
может кто-то переделывал ФМ ALSM_EXCEL_TO_INTERNAL_TABLE для чтения заданного листа или всех/нескольких листов?
Я переделывал по номеру, для версии 4.6, вместо кода
Code:
GET PROPERTY OF application 'ACTIVESHEET' = worksheet.
m_message.
делал так
Code:
* Активируем лист по номеру i_sheet_num
GET PROPERTY OF application 'Worksheets' = worksheets.
m_message.
GET PROPERTY OF worksheets 'Count' = sheet_count.
m_message.
IF i_sheet_num > sheet_count OR i_sheet_num < 1.
GET PROPERTY OF application 'ActiveWorkbook' = workbook.
SET PROPERTY OF workbook 'Saved' = 1.
CALL METHOD OF application 'QUIT'.
FREE OBJECT worksheets. m_message.
FREE OBJECT workbooks. m_message.
FREE OBJECT workbook. m_message.
FREE OBJECT application. m_message.
FREE OBJECT excel. m_message.
RAISE sheet_not_found.
ENDIF.
* Определяем номер листа соотв. НЕ скрытому листу с номером i_sheet_num, в документе лист может быть 1ым, но его номер 3, если перед ним 2 листа скрыто.
num_sheet = 0. " фактический номер
vis_num_sheet = i_sheet_num.
DO sheet_count TIMES.
num_sheet = num_sheet + 1.
CALL METHOD OF worksheets 'Item' = worksheet
EXPORTING #1 = num_sheet.
m_message.
GET PROPERTY OF worksheet 'Visible' = vis.
* если лист видимый
IF vis <> 0.
vis_num_sheet = vis_num_sheet - 1.
ENDIF.
IF vis_num_sheet = 0.
EXIT.
ENDIF.
ENDDO.
CALL METHOD OF worksheet 'Activate'.