올레 자동화 - 단어 타벨 (델파이)
-
16-09-2019 - |
문제
나는 단어로 테이블 내부 테이블을 만들려고 노력하고 있습니다. 물론 Finall 프로그램에서는이 샘플에 있지 않은 Dinamical이 될 것입니다.
다음은 내 샘플 코드입니다.
var
aTable, bTable, cTable : OLEVariant;
begin
m_WordApplication := CreateOleObject('Word.Application') ;
m_WordDocument := m_WordApplication.Documents.Add;
aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
m_WordDocument.SaveAs('C:/test.doc', False) ;
m_WordApplication.Quit(False);
먼저 커서 위치에 새 테이블 (2 행, 1 열)을 넣은 다음 두 번째 테이블을 셀 (1,1)과 첫 번째 테이블의 셀 (2,1)에 넣으려고합니다. 두 번째 테이블에는 2 개의 행과 1 개의 열이 있지만 세 번째 테이블에는 3 행과 1 개의 열이 있습니다. 그러나 내가 원하는 대신에 두 번째와 세 번째 테이블 whit가 한 줄만 얻습니다. 셀에 무언가를 넣었는지 여부에 관계없이 항상 그 테이블에 넣은 마지막 문자열 만 볼 수 있습니다.
더욱이, 첫 번째 테이블에 1 행과 2 개의 열 테이블을 넣으면 모든 것이 정상입니다.
도와주세요.
고마워요, 로크
해결책
코드로 테이블을 만드는 데 문제가있는 경우 다음을 수행하십시오.
- 열린 단어
- 새로운 매크로를 기록하십시오
- 녹음하는 동안 원하는 테이블을 만들고 녹음을 중지하십시오.
- Visual Basic Editor에서 매크로 코드를보고 Ole-Automation 코드로 번역하려고 노력하십시오 (어렵지 않으면 거의 동일합니다).
다른 팁
aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;
Btable & ctable에 대해서도 똑같이해야합니다.
2 행 이상/열을 추가하면 경계를 분리하려면 테두리가 필요합니다 (즉, 1 행에서 1 행을 다른 열에서 또는 별도 1 열에서 분리하십시오).
도움이 되었기를 바랍니다.
제휴하지 않습니다 StackOverflow