トップページ > プログラム > 2014年07月08日 > sRhcm5aM

書き込み順位&時間帯一覧

29 位/202 ID中時間01234567891011121314151617181920212223Total
書き込み数0201000000000000000000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
717
VBAなんでも質問スレ

書き込みレス一覧

VBAなんでも質問スレ
717 :デフォルトの名無しさん[sage]:2014/07/08(火) 01:57:07.35 ID:sRhcm5aM
すみません、Excel VBAを使用したWordの処理でお聞きしたいことがあります。

バージョンはOffice2010です。

【目的】
定型の文章の所定の部分のテキストを置き換える処理を考えています。
データそのものは、VBA内で計算で求めたりCSVなどのデータを読み込んだりします。
例えば、こんな感じです:
○○年には日曜日が○日あり、うち夏日以上の日が○日あった。
(年はInputboxからの入力、日曜日の日数はVBAで計算、夏日以上の日数はCSVのデータを取り込んで計数処理)
※文章などは適当に作成しています。

これをExcel VBAで作成しようとしたのは、関連するExcelのブックを別に作成する必要があるからです。
そのため、一括処理をしたいため、Wordの処理をExcel VBAで処理する計画を立てました。

【考えた処理】
文章は穴埋めですので、その部分を置換する処理を考えました。
ところが、この部分はテキストボックスに入っており、
レイアウトの関係でグループ化されています。
そのため、次のページのスクリプトを参考の上、
CreateObject("Word.Application")でWordオブジェクトを作り、
穴部分に識別記号を仮置きして置換処理をすることにしました。
参考スクリプト:http://www.ka-net.org/blog/?p=859

※別の人が別のPCで使う可能性があるため参照設定は使えません。
したがって、Shape型変数はObject型で定義しています。

(続く)
VBAなんでも質問スレ
718 :717[sage]:2014/07/08(火) 01:58:15.67 ID:sRhcm5aM
(717の続き)

【事象と質問】
置換がうまくいかないため、ステップインで調べたところ、
> .Text = SrcText
> .Replacement.Text = DestText
の設定がされていないことがわかりました。
※参考としたスクリプトをそのままWord VBAで実行するとうまく行くことは確認済みです。

質問は、設定ができない理由と解決策です。
(置換以外の方法でも可ですが、文章はWordで今の構造のままでExcel VBAを使うことは必須です。)

よろしくお願いします。
VBAなんでも質問スレ
720 :717[sage]:2014/07/08(火) 03:31:21.49 ID:sRhcm5aM
>>719
717に書いたような穴埋め文章です。

> 例えば、こんな感じです:
> ○○年には日曜日が○日あり、うち夏日以上の日が○日あった。
> (年はInputboxからの入力、日曜日の日数はVBAで計算、夏日以上の日数はCSVのデータを取り込んで計数処理)
> ※文章などは適当に作成しています。

具体的には、次の文章が完成形になります。(例では、毎年3月に作成する設定。)
「2012年には日曜日が53日あり、うち夏日以上の日が120日あった。」(2013年3月8日作成)
「2013年には日曜日が52日あり、うち夏日以上の日が147日あった。」(2014年3月12日作成)
※数字は適当です。
※数字以外の文言は全く同じですが、
もとの文章には書式の設定が一部テキストに設定してあるため
.TextFrame.TextRange.Text = yyyy & "年には日曜日が" & dd & "日……
のようにTextプロパティで直接設定するのは難しいと思われます。

このような文章が、テキストボックスに入り、
ラインなどの図形との相対位置を固定する目的でグループ化されています。

なので、雛形とする文章としては、
「@@@年には日曜日が##日あり、うち夏日以上の日が**日あった」
として、@@@を2013に、…と置換するマクロを企画しています。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。