仕事でECサイトの運用に携わっていまして、自分のために色々メモ。
やりたいこと
htmlの記事に流し込む用に元のテキストがWord文書で送られてくるんです。
それを、現在は記事の種類ごとに、タイトル箇所のタグ、本文タグ、画像タグ……
と全部手でコピペで打ち込んでいるんですよね。
目視でバランスを見て改行などを調整をすることもありますが、
ある程度決まったパターンというのがあるので
マクロ化できるんじゃないかなと。
つまり、Wordで送られてきた文章を
記事Aに流し込む用、記事Bに流し込む用
とそれぞれのパターン別にhtml化を一気にしたいなと。
奮闘中の様子
Excel VBAは昔ゴリゴリ書いていましたが、Word VBAは初めて。
やりたいことを朧げに書きまとめて、一つ一つひたすらGoogle検索です。
Excelのクセでついついセル単位で考えてしまうのを、どうやったらWordでスマートにできるか。
ググりまくる内に、Wordでは選択範囲、Selectionの概念でマクロを組んでいくのが良さそうというのがわかってくる。
本当はワンクリックですべて行えるようにしたいのですが、
タイトル部分なのか、本文なのか、画像挿入場所なのかの識別がまだ組めなかったので
一旦、目視で文の種類を判断してショートカットで処理していく形に。
↓まだ勉強中で間違っているかもしれないコード。
Sub insertTitle()
Selection.InsertBefore “<b><font size=””5″”>”
Selection.InsertAfter “</font></b>” & vbCrLfWith Selection.Find
.Text = vbCr & “</font>”
.Execute Replace:=wdReplaceAll, replacewith:=”</font>”
End With
End Sub
Sub makeBR()
With Selection.Find
.Text = vbCr
.Execute Replace:=wdReplaceAll, replacewith:=”<br>” & vbCrLf
End WithEnd Sub
目で見ても読みやすい綺麗なコードになるように奮闘中。
初め、<br>タグの後につける改行を「vbCr」にしてたんですが、
それだとECサイトの編集画面のボックスにコピペした時、改行がなくなってしまいました。
<br>タグがあるのでhtml的には問題ないんですが、
後から編集画面で直接修正したい場合、改行がいっさいないと見にくいですよね。
そんなわけで、「改行のコードって色々種類があるらしい」と思い出して
vbCr⇒vbCrLfにすると編集画面にコピペしても改行が保たれる状態になったのですが、
Word上には謎のマーク(四角に×マーク)が表示されるようになってしまいました。
うーん。
一応できそうではあるけど、賢い方法ではないかもしれないなぁ。
いっそテキストファイル上で自動化するのもありかなと思いつつ、それだとVBAではなくなって別のプログラミング言語が必要そうなのかなとか。
今後勉強したいこと
vbCr、vbLf、vbCrLf の違いがよくわかっていない。
謎のマーク(四角に×マーク)の正体。
コメント