Wordで化学式の数字を下付きに置き換えるマクロ | サイコロにもてあそばれる日々

サイコロにもてあそばれる日々

統計学に関連する内容を備忘録代わりに書いていきます。

Microsoft WordでCO2等の化学式を書くとき、2を下付きにする場面があります。
数が少なければ手作業で済みますが、数が多いときやどこに書いたかわからない場合には手作業では苦労します。
そこで、この作業を自動化するマクロを作成しました。

ダウンロードはこちらから

画面上部の「フォルダーの操作」をクリックし、「フォルダーのダウンロード」をクリックするとダウンロードできます。
(ウィルスチェックの結果、問題なし。)

1.インストール方法
・このファイルを以下のフォルダにダウンロードします。
Windows XPの場合 C:\Documents and Settings\\Application Data\Microsoft\Word\STARTUP
Windows Vista/7の場合 C:\ユーザー\\AppData\Microsoft\Word\STARTUP

2.使用方法
・Word 2007/2010の場合、開発タブが表れるので、「マクロ」をクリックします。


・「化学式の下付きへの変換」が選択されているので、「実行」


・CO2, CH4, N2O, SF6, H2O, O2, O3, H2, NH3, Cl2の10種類の化学式の数字部分が下付きになります。置換した個所は黄色でハイライト表示されます。
※クリップボードのデータは消去されます。
※範囲を限定して置換することはできません。文章全体が置換対象です。

(今後の改善予定:クリップボードの内容が維持されるようにする。)


参考までに、ソースコードも載せておきます。

Option Base 1

Sub 化学式の下付きへの変換()

Dim i As Integer 'カウンタ変数
Const n As Integer = 10 '化学式の数(追加するときはこの数字を変更)
ReDim WordList(n) As String '化学式を入れる変数
ReDim Position(n) As Long '下付きにする位置を入れる変数
WordList(1) = "CO2": Position(1) = 3 '化学式と位置を入力
WordList(2) = "CH4": Position(2) = 3 '追加するときは、ここに記述
WordList(3) = "N2O": Position(3) = 2
WordList(4) = "SF6": Position(4) = 3
WordList(5) = "H2O": Position(5) = 2
WordList(6) = "O2": Position(6) = 2
WordList(7) = "O3": Position(7) = 2
WordList(8) = "H2": Position(8) = 2
WordList(9) = "NH3": Position(9) = 3
WordList(10) = "Cl2": Position(10) = 3

Application.ScreenUpdating = False '画面表示を停止

With Selection '以下Selectionを省略
.Collapse '選択範囲を解除

For i = 1 To n '繰り返し処理の開始
.TypeText Text:=WordList(i) '本文に化学式入力
.MoveLeft Unit:=wdCharacter, Count:=Len(WordList(i)), Extend:=wdExtend '化学式を範囲選択
.ClearFormatting '書式の解除
.Range.HighlightColorIndex = wdYellow '化学式を黄色で強調表示
.Characters(Position(i)).Font.Subscript = True 'Position変数で指定した位置を小文字に
.Cut 'クリップボードに切り取り

With .Find '以下Findを省略
.ClearFormatting '書式の解除
.Text = WordList(i) '検索対象文字列の指定
.Forward = True '下に検索
.Wrap = wdFindContinue '文章の末尾まで達したら先頭から検索を継続
.Format = True '書式を検索条件に追加
.Font.Subscript = False '既に下付きになっている化学式は検索対象としない
.MatchCase = True '大文字と小文字を区別する
.MatchWholeWord = False '完全に一致する単語以外も検索する
.MatchByte = False '半角と全角を区別しない
.MatchAllWordForms = False '英単語の異なる活用形は検索しない
.MatchSoundsLike = False 'あいまい検索をしない
.MatchWildcards = False 'ワイルドカードを使用しない
.MatchFuzzy = False 'あいまい検索をしない

With .Replacement '以下Replacementを省略
.ClearFormatting '書式の解除
.Text = "^c" 'クリップボードの内容
End With 'Replacementの省略終了

.Execute Replace:=wdReplaceAll '置換実行

End With 'Findの省略終了
Next i '繰り返しここまで

.Collapse
.Range.HighlightColorIndex = wdNoHighlight '強調表示の書式を残さない
End With 'Selectionの省略終了

Application.ScreenUpdating = True '画面表示を再開

End Sub