段組みを使ったWord文書を段組みの情報を残したままテキストで出力する方法です。
1段の場合は40文字、2段の場合は19文字で改行を挿入します。
段組みの段数は「段落.PageSetup.TextColumns.Count」で取得できます。
またセクション区切りの部分(文字コードが12)はそのまま出力すると表示がおかしくなるので判定して無視します。
関数「cut」は文字列に指定した文字数で改行を挿入します。
Sub 段組みをテキスト出力()
'段数に応じて改行を追加しテキストファイルに出力する。
Const mojisu1 = 40 '段数が1のとき
Const mojisu2 = 19 '段数が2のとき
Const myfilename = "d:\test.txt"
Dim danrakusu, dansu, mojisu, i
Dim danraku
Dim mytext
'各段落の文字列と段数を取得し、段数に応じて改行を追加する。
danrakusu = ActiveDocument.Paragraphs.Count
mytext = ""
For i = 1 To danrakusu
danraku = ActiveDocument.Paragraphs(i)
dansu = danraku.PageSetup.TextColumns.Count
If (Asc(danraku) <> 12) Then
If dansu = 1 Then
mojisu = mojisu1
Else
mojisu = mojisu2
End If
mytext = mytext & cut(danraku, mojisu)
End If
Next i
'文字列をテキストファイルに出力する。
With CreateObject("ADODB.Stream")
.Type = 2
.Charset = "utf-8"
.Open
.WriteText mytext, 1
.SaveToFile myfilename, 2
.Close
End With
End Sub
Function cut(str, num)
Dim i
For i = 1 To Len(str)
cut = cut & Mid(str, i, 1)
If i Mod num = 0 Then
cut = cut & Chr(13)
End If
Next i
End Function
Wordにはアウトライン表示というものがあります。
通常は文字の大きさの違いも反映して表示されるのですが、もし文字の大きさが全て同じ場合には、「下書きフォントを使用する」という設定になっているはずです。
設定方法は次の通りです。Word2007で確認しました。 続きを読む…
Wordのマクロでワイルドカードを使って検索、置換をしようとしたところエラーが出ました。
Sub replace_test()
With Selection.Find
.Text = "あけまして*ございます"
.Replacement.Text = ""
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
エラーメッセージは次の通り。
MatchPhrase、MatchWildcards、MatchSoundsLike、MatchAllWordForms、MatchFuzzyパラメータは、同時にTrueに設定することができません。
Wordで検索、置換をするときはいろいろなオプションがあります。
文書を直に検索、置換するときは矛盾するオプションは選べないようになっていますが、マクロで使うときには正しく設定しないとエラーになります。
例えば、ワイルドカード検索とあいまい検索はどちらが優先するのか、はっきりしないのでエラーになるようです。
ところで、ここで登場した5個のオプションの意味は次の通りです。どれもTrueかFalseを設定します。
| MatchPhrase |
単語間のすべての空白文字および制御文字が無視されます。 |
| MatchWildcards |
検索する文字列にワイルドカードが含まれている場合、このプロパティの値は True です。 |
| MatchSoundsLike |
True に設定すると、検索文字列に類似した単語が検索対象となります。 |
| MatchAllWordForms |
True に設定すると、検索文字列のすべての活用形が検索対象となります。 |
| MatchFuzzy |
True に設定すると、検索時に日本語の文字列のあいまい検索オプションが使用されます。 |
そこで、MatchWildcardsだけにTrueをセットし、その他はFalseをセットしました。
Sub replace_test()
With Selection.Find
.Text = "あけまして*ございます"
.Replacement.Text = ""
.MatchPhrase = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
しかしこれでも同じエラーが出ます。
セットする順序が影響するようです。
Sub replace_test()
With Selection.Find
.Text = "あけまして*ございます"
.Replacement.Text = ""
.MatchPhrase = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
順序を変えてMatchWildcardsを最後にしてみたところ正しく動作しました。
Word文書を開いたときに自動的にマクロを実行する方法です。
ここでは文書を開いたときに「Hello!」というメッセージボックスを表示させます。 続きを読む…
自作のマクロにショートカットキーを設定する方法です。
ショートカットキーとは「Ctrlキーを押しながらTキーを押す」などで特定のマクロなどを実行する仕組みです。「Ctrl+C」はコピー、「Ctrl+V」は貼り付け、などのショートカットキーは定番でしょう。
このショートカットキーはカスタマイズできます。ここではマクロを採り上げましたが、Wordで使える機能ならば何でもOKです。Word2007で確認しました。
- 左上端にあるOfficeボタン-Wordのオプションを選択。
- Wordのオプションダイアログで、ユーザー設定を選択。
- ショートカットキー:ユーザー設定をクリック。
- 分類で「マクロ」、マクロで使いたいマクロを選択。
- 「割り当てるキーを押してください」にカーソルを動かす。
- キーボードのキーを押す(例えばCtrlキーを押しながらTキーを押す)。
- 「割り当て」をクリック。
キーボードのキーについては、「普段使わない」かつ「覚えやすい」ものにしてください。
「Ctrl+C」などの定番はやめた方が無難です。
Wordの目次のフォントの変え方について書きます。
目次のフォントは見出しのフォントとは別に設定します。Word2007で確認しました。
見出しの設定
- 見出しにする行にカーソルを合わせる。
- ホーム-スタイル-見出し1を選択。
目次の挿入
- 参考資料-目次-目次-目次の挿入を選択。
- 目次ダイアログで書式を選択してOK。
この書式で例えば「クラシック」を選ぶと全て大文字になってしまいます。(例、Word→WORD)
これを直すには次の通りにします。
目次のフォントを変更
- ホーム-スタイル-右下向き矢印。
- スタイルダイアログで目次1を右クリック-変更。
- スタイルの変更ダイアログで書式-フォント
- フォントダイアログで文字飾りのすべて大文字のチェックを外す。
フォントダイアログで文字飾りだけでなく、フォントや太さを変えることができます。
Word2007から数式を書くときには「Microsoft数式3.0」を使うようになっています。
メニューから挿入-記号と特殊文字-数式とたどると、分数やべき乗を使ったきれいな数式が入力できます。
数式を挿入した後はメニューからデザイン-構造とたどると複雑な構造の数式が書けるのですが、ここではもっと簡単な方法を紹介します。
例として

という数式を書きます。
- メニューから挿入-記号と特殊文字-数式-新しい数式の挿入を選択。
- 「ax^3+bx^2+cx+d=e」と入力。
自動的に指数部分が上付きになります。
次は

という数式を書きます。
「e^x=1+x/1!+x^2/2!+x^3/3!+…」と入力します。
これも自動的に整形されて表示されます。「…」は「
」になります。
マイクロソフトでは「e^x=1+x/1!+x^2/2!+x^3/3!+…」のように横に並べた状態を「行形式」、分数やべき乗などを整形して表示する状態を「2次元形式」と呼んでいます。
なお、数式のフォントはイタリックの方が格好がいいですね。
数式のイタリックにしたい部分を選択して、デザイン-ツール-標準テキストを何度かクリックするとイタリックになります。
Wordで作成した文書はPDFで保存することができます。
ページを指定することで、特定の部分だけをPDFにすることもできます。
1ページずつ指定すれば、各ページをPDFで保存することができますが、ページ数が増えるとなかなか面倒です。
これをマクロで実行させる方法を考えました。Word2007で確認しました。 続きを読む…
既にできているWord文書に対して一括して処理をしたいことがあると思います。
表紙に通し番号を入れたり、会社名や担当者名が変わったので置換したり、という場面です。
そのためのマクロを考えてみました。 続きを読む…
Wordファイルの透かしを削除するには次のようにします(Word2007)。
- ページレイアウト-ページの背景-透かしを選択。
- 透かしの削除を選択。
これをマクロで実行する方法を考えました。
複数のWord文書に連続して処理を施すマクロに応用することもできます。 続きを読む…
最近のコメント