« フォルダ中のすべてのワードファイルの内容をコピペする | トップページ | 小飼弾の「仕組み」進化論 »

2009年5月24日 (日)

【解説】フォルダ中のすべてのワードファイルの内容をコピペする

昨日紹介したマクロを作成したときに、いくつか学びがありましたので、メモしておきます。

●文書の内容をコピーする指示

With Documents.Open(FileName:=●, Visible:=False)
       .Content.Copy
       .Close
End With

こんなものが230行から260行にかけて記載されています。

contentというプロパティは、documentオブジェクトのプロパティであって、その文書の内容を示すものです。

rangeにも書き換えられます。処理スピードは同じなんでしょうか?

書き換えて実験してみましたが、違いはわかりませんでした。

上の例では、Documents.Open がファイル名(上の例では●)により特定されて開かれたDocumentオブジェクトを示すので、その後にcontentと記載できるみたい。

Contentを知らなかったときには、以下のようにしていました。

マクロの記録機能で、記録ができます。

Selection.WholeStory ’すべてを選択
Selection.Copy ’選択範囲のコピー

スピード変わるんでしょうか?実験してみましたが、少しの文書を開いたりするのなら、体感速度は変わりませんでした。

すくなくとも、プログラム文が短くなるのですっきりすることは確かですね。

●文字列の入力箇所を文頭(文末)にする指示

270行に以下のような指示があります。(説明用に少し変えてあります)

Activedocument..Range(Activedocument.Range.End - 1, Activedocument.Range.End - 1).Text = ”入力する文字列”

これは、文書の最後の文字から1つめに”入力する文字列”と入力するための指示です。

Range(開始位置, 終了位置)を入力して、対象となる範囲の開始と終了位置の特定ができます。

上記の位置というのは、数値です。文頭から数えて何文字目か?に対応します。

Activedocument.Range.End で、この文書の最終文字の位置を取得できます。

文書全体の最後には、必ず改行マークが入っているので、それをのぞいたものが、実際の文書の最後のカーソル位置ですね。

だから、Activedocument.Range.End - 1のように、なっているわけです。

開始位置と終了位置をともに同じ値にすれば、その特定された範囲とは、何も選択されていない1点(位置)になります。

ちなみに、文頭に文字列を入力するときには、「開始位置も終了位置もゼロ文字目に文字を入力する」という意味で、以下のようにかけます。

Activedocument..Range(0, 0).Text = ”入力する文字列”

これがわかると、文字列を入力する際に、カーソル位置を移動する必要がなくなります。

今までは、マクロの記録機能で取得した以下のコードを使っていましたが、今後は不要になりそうです。

カーソルの移動が減ると、処理スピードが上がるそうなので、楽しみです。

文頭に文字列を入力: 
Selection.HomeKey Unit:=wdStory
Selection.TypeText Text:="入力する文字列"

文末に文字列を入力:
Selection.EndKey Unit:=wdStory
Selection.TypeText Text:="入力する文字列"

|

« フォルダ中のすべてのワードファイルの内容をコピペする | トップページ | 小飼弾の「仕組み」進化論 »

▼ファイル統合」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/45114397

この記事へのトラックバック一覧です: 【解説】フォルダ中のすべてのワードファイルの内容をコピペする:

« フォルダ中のすべてのワードファイルの内容をコピペする | トップページ | 小飼弾の「仕組み」進化論 »