2018年10月30日火曜日

文書整形~ワードマクロVBA


ワードマクロ難解すぎ!!!!
エクセルと比べてものすごく使いづらい
解説サイトも少ないし・・・

文書系ソフトのマクロってほぼ整形くらいしか用途無いじゃん
もっと使いやすい設計にしてくれよ~
これなら愛用しているgPadでマクロ組んだ方がずっと簡単だわ(-_-)
でもワープロの方が難しいのかも
単なるエディタの方が単純で使いやすいって事なのかな(・_・?)

私がやりたかったのは、A、B、Cという文字列が10行くらいの中に出現するが、それを「C   A」という一行にまとめてデータベース化すること
AからBの間は削除、CをコピーしてAの前に挿入、みたいなことを延々と続けたかった
まずは検索、そしてヒットした位置を覚えてから削除挿入等の操作をするもの

一応備忘録としてコードを残しておく

①検索
2018/10/25 という形式の日付文字列を検索したかった
検索文字列の記述から検索実行まではこんな感じ
Selection.Find.ClearFormatting
 With Selection.Find
 .Text = "^#^#^#^#/^#^#/^#^#"
 .Wrap = wdFindContinue
 End With
 Selection.Find.Execute

これでヒットした文字列が選択状態になる
この選択範囲のページと行番号は以下で取得
page = Selection.Information(wdActiveEndAdjustedPageNumber)
line = Selection.Information(wdFirstCharacterLineNumber)
エディタならページの概念が無いから行数だけで良いんだけど、ワープロはそこが面倒ですね

コピーは
Selection.Copy

②カーソルの移動
任意のページの任意の行に移動
Selection.GoTo what:=wdGoToPage, which:=gotoabsolute, Count:=page
Selection.GoTo what:=wdGoToLine, which:=gotoabsolute, Count:=line
文頭に移動して一行下がる
Selection.HomeKey Unit:=wdLine, Extend:=wdMove
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove '移動のみ
これで移動じゃなくて選択範囲が広がるようだ
Selection.MoveDown Unit:=wdLine, Count:=1 , Extend:=wdExtend '拡張移動
ちなみに選択範囲を広げるのは↓でも書ける、違いはよくわからん
Selection.Expand

ここら辺の書式の意味がよくわかりません┐('д')┌
wdExtendやwdMoveは整数型のようなので定数、どこかに定義用のヘッダファイルがあるんだろうなあ

③ペーストや文字列の挿入
Selection.Paste
Selection.TypeText Text:=" "
これは簡単だね

カーソルの移動と選択が恐ろしく面倒
range、selectionといったオブジェクトの使い方が複雑すぎ
ワードで整形しようという発想そのものが間違ってたのかもしれませんな~(^_^)

0 件のコメント:

コメントを投稿