- - PR -
Microsoft Word自動化について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-08 14:05
お世話になっております
VB.NETを使用してMicrosoft Wordを自動化する必要が生じ、 作成をはじめたのですが、罫線の引き方で詰まってしまいました。 まずファイルを起動して表を挿入するところまではうまく行き、 選択した表またはセルの外枠または内側の罫線の種類を引くことは できました。 しかし、同じセル内で右の罫線と左の罫線が異なるものを引く方法が わかりません。 具体的に書きますと、 ---以下ソース Dim wordapp As Word.Application Dim wordSHT As Word.Document wordapp = CreateObject("Word.Application") wordSHT = wordapp.Documents.Add wordSHT.Tables.Add(wordSHT.Range, 1, 1) wordSHT.Tables.Item(1).Cell(1, 1).Range.Borders.OutsideLineWidth = Word.WdLineWidth.wdLineWidth225pt ---以上ソース 以上のソースでセルの外側に225ptの罫線を引くことができますが、 左を225pt右を75ptとかにする方法が知りたいということです。 ちなみにwordのマクロを記録すると Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone With Selection.Borders(wdBorderLeft) .LineStyle = Options.DefaultBorderLineStyle .LineWidth = Options.DefaultBorderLineWidth .Color = Options.DefaultBorderColor End With のように表示されますが、これの変換方法がわかりません。 ご存知の方がいらっしゃいましたら、お教え願えないでしょうか よろしくお願いします。 開発環境 OS:Windows 2000 Pro Word 2000 | ||||||||
|
投稿日時: 2004-07-09 07:07
実際に試したわけではないので、ご自身で確かめていただきたいのですが
確かOptions ObjectはApplication ObjectまたはGlobal Object に格納されると記憶しています。 従って wordapp.Options.DefaultBorderLineStyle で値を取得できないですか。 他のSelection ObjectなんかもActiveWorkSheetとかの下に格納されると 思います。 ちょっとワードのVisualBasicEditorから調べてみたら多分いい答えが 見つかるのではないかと思います。 | ||||||||
|
投稿日時: 2004-07-13 13:29
ベーちゃんさんありがとうございます。
すいません書き方が悪かったですね。 おっしゃる通り罫線の幅とかサイズは wordapp.Options.DefaultBorderLineStyle または wordapp.Options.DefaultBorderLineWidth で取得できます。 知りたいのは Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone With Selection.Borders(wdBorderLeft) .LineStyle = Options.DefaultBorderLineStyle .LineWidth = Options.DefaultBorderLineWidth .Color = Options.DefaultBorderColor End With これの「wdBorderLeft」に対応する部分で、セルに対して それぞれ上だけ、下だけ、右だけ、左だけという風に罫線を引く方法です。 wordSHT.Tables.Item(1).Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle のように選択範囲の内側に線を引く方法及び wordSHT.Tables.Item(1).Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle の用に選択範囲の外側全てに罫線を引く方法はわかったのですが・・・。 もしご存知の方がおられましたらご教授ねがいます。 | ||||||||
|
投稿日時: 2004-07-13 14:41
背古井さん、こんにちは。
この Selection を単純に wordSHT.Tables.Item(1) で置き換えれば良いのではないですか? 試してませんけど。
| ||||||||
|
投稿日時: 2004-07-13 16:25
HTMLがわかっているなら、HTMLで文書を作りそれを
Wordで開き、Word文書(doc)形式で保存、でも作れます (HTML を RTF と読み替えてもよい) シングルユーザーアプリをチマチマ操作していると時間がかかります。 Wordの細かい自動配置が必要な場合はHTMLでできないことも ありますが、そこそこの改ページもできます。 テキストはHTMLで作り、埋め込みコントロールなどはVBでとか 役割分担も可能です。 この会議室ページをHTML保存→Wordで開くと、スクリプト→マクロみたいな現象も? [ メッセージ編集済み 編集者: MMX 編集日時 2004-07-13 16:35 ] クライアントにHTMLを送って、Wordで開かせる、が可能なら単純なのですが Word は面白い、HTMLテキストを .DOC の拡張子に変更して ダブルクリックするとそのまま開ける。ローカルでは Webサーバーから拡張子DOCで中身HTMLではどうでしょう? IE は中身を見ている気がする。 Word で開いてもIE表示とは一致しない、 Word 向きのHTMLスタイルは何かのノウハウは必要なようです。 Wordのオートメーションとどちらが簡単か? [ メッセージ編集済み 編集者: MMX 編集日時 2004-07-13 17:13 ] | ||||||||
|
投稿日時: 2004-07-14 11:49
wdBorderLeftの値が知りたいだけでしたら、次の2つの方法のうちの一つで
知ることができます。 1.オブジェクトブラウザでwdBorderLeftの値を検索する 2.VBEditorのイミディエイトウィンドゥで ?wdBorderLeftとして実行する そしてその直値をコードに書くと動きますよ。 あんまりスマートな方法ではないですが。 | ||||||||
|
投稿日時: 2004-07-27 18:29
ご返事が遅れて申し訳ありません。
レスを下さった皆さんありがとうございました。 >きくちゃんさん すいません試してみましたけどだめでした。 >MMXさん 客先がWORDで出力することしか認めてくれないんです(泣 >べーちゃんさん 値をセットする元がわからないんです。 でも参考にさせていただきます。 とりあえず今回WORDのブランクフォームを創ってそれに 書き込む形で処理することにしました。 皆さんどうもありがとうございました。 | ||||||||
|
投稿日時: 2004-07-27 19:10
背古井さん、こんばんは。
一つの事を実現するのに、方法は一つではありませんし、発想を転換することは重要だと思います。 上記の方法であれば、書式の変更なんかにも対応しやすいですしね。 ただ、
って、何がどのようにダメだったのか、こちらとしては非常に気になってしまいます。 よかったら、このあたりについて教えて頂けませんか? #既に解決している問題なので、もう、どうでもいいのかも知れませんが。 |