C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[37335] Re:Re:Re:[질문]워드에 선을 그리려면...
임문환.실업자 [origin] 1284 읽음    2004-09-19 16:28
하안인 님이 쓰신 글 :
: 답변 감사합니다.
:
: 액셀로 내보낼때 매크로 기록을 해서 해 보았는데 액셀에서 셀의 속성 정하는것을 그때도
: 못해서 텍스트만 내보낸적이 있어서...
:
: 워드에서 글씨를 쓸때
:
:  WordDocument1->Range(EmptyParam, EmptyParam)->InsertAfter(StringToOleStr("Name:" + Table->Fields->Fields[3]->AsString + '\n'));
:
:
: 위와 같이 예제에 서 본대로만 사용해 봐서..
:
: 좌표의 위치를 옮기는 것이 아니라 파일의 끝에다 값만 대입해 봐서요.
: addline의 어느 매소드인지요.
:
: WordDocument1 컴포넌트의 Sentences는 아닌것 같구요.
:
: 처음 해보려니 아는것이 없어서
: 염치 불구하고 도움을 청합니다.
:
: 제가 아는 것이 워드에 연결해서 이미지나 위의 함수를 써서 문자를 내보내는 수준이거든요.
:
: 보고서를 만드는 정도의 스킬을 하려면 표와 위치안에 삽입같은것을 할수 있으면
: 좋겠는데요.
:
:  WordDocument->Tables->Add(EmptyParam,2,5,wdWord9TableBehavior,wdAutoFitFixed);
:
: 이렇게 했는데 에러가 나네요.
: 인자가 5개와 6개 두개의 함수가 있고 매크로로 보면 비베에 정의된것이 5개라서
: 위와 같이 했는데 ..
:
: 원형이
: (RangePtr Range,long NumRows,Long NumColumns,Tvariant* DefaultTableBehavior,TVariant* AutoFitBehavior,
:     TablePtr *prop);
:
: (RangePtr Range,long NumRows,Long NumColumns,Tvariant* DefaultTableBehavior,TVariant* AutoFitBehavior,
:     );
:
: TablePtr이 무엇인지 몰라서 두번째 인자값 비슷하게 했는데..
: RangePtr, TablePtr은 헬프에 없어서..

Word에서,
[도구]->[매크로]->[보안..] 메뉴를 선택하면 나타나는 창에서
1.  '신뢰할 수 있는 원본' 탭의 'Visual Basic 프로젝트에 안전하게 액세스할 수 있음'을 선택해두면 외부에서 매크로를 편집할 수 있고
2. '보안 수준' 탭의 '낮음 '을 선택하면 외부에서 매크로를 실행할 수 있습니다.

아마도 외부에서 OLE를 사용하여 일일이 컨트롤하는 것보다는 매크로를 삽입하여 Word 내부에서 일거에 실행시키는 것이 빠를 것 같아 이 방법을 알려드리는 것입니다.
이렇게 하면 워드에서 기록한 매크로를 그대로 이용할 수 있는 장점도 있습니다.
매크로에 바이러스가 없다는 가정을 해야 합니다만 님이 직접 작성한 것이므로 별 상관 없겠지요.

Variant wordApp, wordDocuments, wordDocument,wordNewLine, wordLine, wordModule;
wordApp = Variant::CreateObject("Word.Application");
wordDocuments = wordApp.OlePropertyGet("Documents");

WideString strMacro="sub TestFunc\r\n"
    "ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _\r\n"
        "5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _\r\n"
        "wdAutoFitFixed\r\n"
    "With Selection.Tables(1)\r\n"
        "If .Style <> \"표 구분선\" Then\r\n"
            ".Style = \"표 구분선\"\r\n"
        "End If\r\n"
        ".ApplyStyleHeadingRows = True\r\n"
        ".ApplyStyleLastRow = True\r\n"
        ".ApplyStyleFirstColumn = True\r\n"
        ".ApplyStyleLastColumn = True\r\n"
    "End With\r\n"
    "end sub\r\n"
;

// wordDocument = wordDocuments.OleFunction("Open","??");
wordDocument = wordDocuments.OleFunction("Add",Variant::NoParam(),Variant::NoParam(),wdNewBlankDocument,Variant::NoParam());
wordModule = wordDocument.OlePropertyGet("VBProject").OlePropertyGet("VBComponents").OleFunction("Add",vbext_ct_StdModule);
wordModule.OlePropertySet("Name", "MyTestModule");
wordModule.OlePropertyGet("CodeModule").OleFunction("AddFromString",strMacro); //.AddFromFile(file_name)
wordApp.OleFunction("Run","TestFunc");

wordDocument.OleFunction("SaveAs","TestWordDoc2.doc",wdFormatDocument,false);
wordDocument.OleFunction("Close");

wordDocument = Unassigned;
wordDocuments=Unassigned;
wordApp=Unassigned;

+ -

관련 글 리스트
37331 [질문]워드에 선을 그리려면... 하안인 797 2004/09/19
37332     Re:[질문]워드에 선을 그리려면... 임문환.실업자 998 2004/09/19
37333         Re:Re:[질문]워드에 선을 그리려면... 하안인 835 2004/09/19
37335             Re:Re:Re:[질문]워드에 선을 그리려면... 임문환.실업자 1284 2004/09/19
37334             Re:Re:Re:[질문]워드에 선을 그리려면... 임문환.실업자 1264 2004/09/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.