htmlの特殊文字の変換がいちいち面倒なのでExcelのVBAを使って変換したい文字を自由に指定して変換できるようにした。
あらかじめ変換対象の特殊文字と変換後の文字を表に記載しておいて、対象のhtmlコードをコピーしてボタンをクリックすれば特殊文字が変換された結果をセルに書き出してクリップボードに転送できるツールを作った。
ツールの概要
単なる文字の置き換えツールなんだけど、あらかじめどの文字を何に置換するか表に記載しておけば対象(コピーした文字列)から置換文字を探して置換してくれるというもの。
置換前と置換後の文字列をセルに書き出しすので置換後の文字列を確認して問題なければ[コピー]ボタンを押せばクリップボードに転送(コピー)されるので、そのまま貼り付けでOK。
元々は、ブログにhtmlコードを載せるときにいちいち手作業で修正するのが面倒になったので作った。
別にhtmlコードに限らず、規則にしたがって複数の文字列を置換したい場合などにもそのまま使用できる。
ツールの使い方
ツールの画面構成は、こんな感じ。
使い方は以下の通り。
置換前、置換後の表にそれぞれ対応する文字列を入力しておく。
空白行を表の終わりと判断しているので、間に空白行を入れないこと。 行数が足りなければ行を挿入して増やせば良い。
変換したい文字列(文章とかプログラムコードとか)をコピーする。
[貼り付けて変換]ボタンをクリックする。 コピーした変換前の文章が左のセルに出力されて、表に従って変換された文字列が右のセルに出力される。
右のセルに出力された変換内容で良ければ[コピー]ボタンを押すと変換内容の文字列がクリップボードに転送(コピー)されるので、貼り付けたい場所に[Ctrl] + [v]などで貼り付けることができる。
表の下にある[変換]ボタンは、左のセルに直接入力して変換したいときに使う。
ツールを構成するプログラム
ツールは、以下の3つのプログラムで構成されています。
コピーされた(クリップボードに転送されている)文字列を左のセルに貼り付けるプログラム
プログラムの中で文字を置換するプログラム(2.)を呼び出している。
Sub copy_text()
With New MSForms.DataObject
.GetFromClipboard
Range("e2").Value = .GetText
End With
Call Replace_Proc
'変換から変換後のコピーまで一気に実行したい場合は、
'以下のコードのコメントアウトを外す
'Call copy_replace_text
End Sub
表の内容に従って文字列を置換して右のセルに貼り付けるプログラム
Sub Replace_Proc()
Range("b3").Select
txtReplace = Range("E2").Value
Do Until Len(ActiveCell.Value) = 0
txtReplace = Replace(txtReplace, ActiveCell.Value, ActiveCell.Offset(0, 1))
ActiveCell.Offset(1, 0).Select
Loop
Range("O2").Value = txtReplace
End Sub
変換後の文字列をクリップボードに転送(コピー)するプログラム
Sub copy_replace_text()
Dim txt As String
txt = Range("O2").Value
With New MSForms.DataObject
.SetText txt
.PutInClipboard
End With
End Sub
ツールのダウンロード
以下のリンクをクリックすればツールがダウンロード(zip形式)できます。 ツールのダウンロード
使用については、自己責任でお願いします。 サポートも特にありません。
まとめ
もともとの用途としてhtmlコードをブログに載せる際の特殊文字の置換が面倒で作ったツールですが、htmlの特殊文字に限らず有る特定の文字だけ置換したいけど、その文字が結構な種類ある場合とかにも使えます。
プログラム自体は単純な置換処理とクリップボード操作なので。
htmlの特殊文字の変換をしてくれるWebサイトなどもありますが、変換対象を自分で選びたかったので作りました。
コメント