웹저장 장소에서 엑셀 서식을 다운 받아서
엑셀 파일에 내용을 넣어주는 프로그램 있습니다.
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF EXCEL 'VISIBLE' = 1.
CALL METHOD OF EXCEL 'WORKBOOKS' = BOOKS.
CALL METHOD OF BOOKS 'OPEN'
EXPORTING #1 = L_ORIGINALPATH.
이렇게해서 엑셀을 open해서. 처리를 하는데...
SET PROPERTY OF EXCEL 'VISIBLE' = 0. 으로 하여서 하니까 화면에는 보이지 않지만.
문서는 열려져 있더라구요...
화면에서 보이지도 않고 입력된 데이터가 자동으로 저장되도록 할 수 없을까요?
GUI_DOWNLOAD 사용하니까 인터널 테이블이 그냥 다운로드 되더라구요.
일정한 양식이 자동으로 첨부가 되어야 하는데..
우선
CALL METHOD OF BOOKS 'CLOSE'. 하니까 닫아지는거 같긴한데..
저장할꺼? 물어보더라구요
CALL METHOD OF BOOKS 'SAVE'
요건 저장이 안되는데 ㅋㅋㅋ 저장하는 방법만 찾으면 될거 같아요.
댓글 5
-
MadMax
2010.10.28 21:00
-
돌맹이
2010.10.28 22:28
왜 난 안되죠???ㅜㅜ
-
MadMax
2010.10.29 18:08
일전에 위와 관련된 테스트 용으로 만든 source 입니다. 주석을 풀어 가면서 테스트 해 보시기 바랍니다.
*&---------------------------------------------------------------------*
*& Report YBIN_EXCEL_CLOSE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ybin_excel_close.
INCLUDE ole2incl.
DEFINE m_message.
case sy-subrc.
when 0.
when 1.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
when others. "raise upload_ole.
write:/ 'OLE Error:', sy-subrc.
endcase.
END-OF-DEFINITION.
DATA : excel TYPE ole2_object,
books TYPE ole2_object,
book TYPE ole2_object,
sheet TYPE ole2_object,
cell TYPE ole2_object,
cell_str TYPE ole2_object,
cell_end TYPE ole2_object,
borders TYPE ole2_object,
font TYPE ole2_object.
DATA: gv_filename LIKE rlgrap-filename,
gv_excel_version(20).
START-OF-SELECTION.
gv_filename = 'C:TEMPEXCEL_TEST.XLS'.
WRITE:/ 'Create Excel'.
CREATE OBJECT excel 'EXCEL.APPLICATION'.
m_message.
SET PROPERTY OF excel 'VISIBLE' = 0.
m_message.
GET PROPERTY OF excel 'VERSION' = gv_excel_version.
m_message.
WRITE:/ 'VERSION :', gv_excel_version.
WRITE:/ 'WorkBooks'.
CALL METHOD OF excel 'WORKBOOKS' = books.
m_message.
* CALL METHOD OF books 'ADD' = book.
* m_message.
* WRITE:/ 'WorkBook'.
* CALL METHOD OF excel 'WORKBOOK' = book.
* m_message.
WRITE:/ `CALL METHOD OF books 'OPEN'`.
CALL METHOD OF books 'OPEN' = book
EXPORTING
#1 = gv_filename.
m_message.
CALL METHOD OF excel 'Worksheets' = sheet EXPORTING #1 = 1.
m_message.
CALL METHOD OF sheet 'Activate'.
m_message.
* 엑셀의 CELL을 세팅함.
PERFORM fill_cell USING 5 1 `AAAAAA`.
PERFORM fill_cell USING 5 2 `BBBBBB`.
PERFORM fill_cell USING 5 3 `CCCCCC`.
PERFORM fill_cell USING 5 4 `DDDDDD`.
PERFORM fill_cell USING 5 5 `EEEEEE`.
PERFORM fill_cell USING 5 6 `FFFFFF`.
PERFORM fill_cell USING 5 7 `GGGGGG`.
PERFORM fill_cell USING 5 8 `HHHHHH`.
* CALL METHOD OF sheet 'SaveAs'
* exporting
* #1 = gv_filename
* #2 = 1.
*
* IF gv_excel_version = '12.0'.
* CALL METHOD OF book 'SAVEAS' " = 1.
* EXPORTING
* #1 = gv_filename "PC 에 생성된 디렉토리 + 파일명
* #2 = 56 " format
* #3 = '' " password
* #4 = '' " WriteResPassword
* #5 = '' " ReadOnlyRecommended
* #6 = '' " CreateBackup
* #7 = '' " AccessMode
* #8 = 2. "ConflictResolution
* ELSE.
* CALL METHOD OF book 'SAVEAS' " = 1.
* EXPORTING
* #1 = gv_filename "PC 에 생성된 디렉토리 + 파일명
* #2 = 1
* #3 = ''
* #4 = ''
* #5 = ''
* #6 = ''
* #7 = ''
* #8 = 2.
* ENDIF.
* WRITE:/ `SET PROPERTY OF books 'Saved'`.
* SET PROPERTY OF books 'Saved' = 1.
* m_message.
WRITE:/ `CALL METHOD OF book 'SAVE'`.
CALL METHOD OF book 'SAVE'.
m_message.
* CALL METHOD OF book 'SHOW'
* EXPORTING #1 = sy-uzeit.
* WRITE:/ `CALL METHOD OF sheet 'SAVEAS' `.
* CALL METHOD OF sheet 'SAVEAS' " = 1.
* EXPORTING
* #1 = gv_filename. "PC 에 생성된 디렉토리 + 파일명
* m_message.
WRITE:/ `CALL METHOD OF excel 'QUIT'`.
CALL METHOD OF excel 'QUIT'.
m_message.
FREE OBJECT : sheet, book, books, excel .
WRITE:/ 'End of Program !!'.
*&---------------------------------------------------------------------*
*& Form fill_cell
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ROW text
* -->P_COL text
* -->P_VAL text
*----------------------------------------------------------------------*
FORM fill_cell USING p_row
p_col
p_val.
CALL METHOD OF excel 'CELLS' = cell
EXPORTING
#1 = p_row
#2 = p_col.
SET PROPERTY OF cell 'VALUE' = p_val.
ENDFORM. " FILL_CELL
----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.6 - E.G.Mellodew. 1998-2010. Sap Release 701 -
돌맹이
2010.10.30 00:39
CALL METHOD OF books 'OPEN' = book
요부분과
CALL METHOD OF book 'SAVE'.
요부분 수정으로 해결했어요 ㅎㅎㅎㅎ
답변은 해결하고 나서 보네요 도움이 많이 되었습니다.
-
고구마
2010.11.09 18:11
덕분에 저도 도움이 되었습니다. 감사합니다.
open 시 기존의 파일이 있는지 여부에 따라서 save 시 어떻게 할 것인지 확인 한는것 같습니다.
아래 문장 참고 하세요..
WRITE:/ `SET PROPERTY OF books 'Saved'`.
SET PROPERTY OF books 'Saved' = 1.
m_message.
WRITE:/ `CALL METHOD OF book 'SAVE'`.
CALL METHOD OF book 'SAVE'.
m_message.
* IF gv_excel_version = '12.0'.
* CALL METHOD OF book 'SAVEAS' " = 1.
* EXPORTING
* #1 = gv_filename "PC 에 생성된 디렉토리 + 파일명
* #2 = 56 " format
* #3 = '' " password
* #4 = '' " WriteResPassword
* #5 = '' " ReadOnlyRecommended
* #6 = '' " CreateBackup
* #7 = '' " AccessMode
* #8 = 2. "ConflictResolution
* ELSE.
* CALL METHOD OF book 'SAVEAS' " = 1.
* EXPORTING
* #1 = gv_filename "PC 에 생성된 디렉토리 + 파일명
* #2 = 1
* #3 = ''
* #4 = ''
* #5 = ''
* #6 = ''
* #7 = ''
* #8 = 2.
* ENDIF.