私の作文作法
(10)

テキストファイルを作る

はじめに
 最近、電子メールを受け取ると、MS-WordやExcelで作られたファイルが添付されていることが多い。これらのファイル(docxls などの拡張子が付いている)に付属しているマクロからコンピュータウィルスに感染する可能性があるのは周知のとおりである。これを世の中では“マクロウィルス”と呼んでいる。

 したがって、他人から受け取ったこの種の添付ファイルを自分のコンピュータ上で開く際には、それなりの危険がともなうことを覚悟の上で行う必要がある。しかし送り手の方は、そんなこちらの事情などにはまったく頓着していないらしいからまったく困ったことではある。

 送り主の人柄を信じ(かつ、それを唯一の心の頼りとしながら)敢えて危険を犯して開いてみると、何のことはない特別にWordのファイルである必要はない単なるテキスト情報だけだったりする。それなら最初からテキストで送ってくれればよいのに。

 このような事態になるのは、送り手が普段使っているワープロソフト(たとえばWord)の機能を十分に使いこなしていないためであろう。Wordで文書を作るのはよいとして、特にWord特有の編集情報を必要としない単純なテキスト情報の場合には、テキストだけ抜き出してメール本文として送付するような習慣にすればよいのである。しかし、利用者がそのための手続きに不慣れなのが直接の原因ではなかろうかと思う(今まで、色々な機会に「簡単にテキストを抜き出せないものか」という声を私はしばしば聞いている)。

 そこでここでは、Wordで作った文書からテキストのみを取り出す最も一般的な方法について紹介することにしよう。こういった話は、本来はWordの解説書などにゆだねられるべき事柄であるが、マクロウィルスの蔓延でそうも言っていられない事態になってきている。以下の説明は、Wordの処理下での話であると理解していただきたい(Excelの添付ファイルを開く方法については、色々とコツが紹介されているのでそれらを参照してほしい)。

方法1(最も素朴な方法)
(1)Wordの文面上をカーソルでドラッグすることによって、文章をコピーする。
(2)普通のテキストエディタやメールシステムの文面を書く場所にそれを貼り付ける。

方法2(最も普通の方法)
(1)メニューバーの[ファイル(F)]から[名前を付けて保存(A)...]を選択する。
(2)[保存する場所(I)]を決めた後、[ファイルの種類(T):]の窓の中から[テキストのみ(*.txt)]または[テキストのみ + 改行(*.txt)]のどちらかを選ぶ(後者は各行末に改行コードを付加したいとき用いる)。

(3)このとき[ファイル名(A)]の窓の中のファイルの拡張子を 〜.doc から 〜.txt に変更して、保存するファイルがテキストであることを明示するようにするとよい。
(4)[保存(S)]ボタンを押して、テキストファイルの完成。この後ファイルは閉じてカレントファイルは未定義にしておくとよい。
 閉じないとWordのカレントファイルは(〜.doc ではなく)〜.txt になるので注意する必要がある。

方法3(マクロを使う方法)
 “MakeTextFile”というマクロを定義する方法を示そう。

(1)まず、メニューバーの[ツール(T)]から[マクロ(M)]を選択する。
(2)[マクロ名(M)]の窓に“MakeTextFile”と入力した後、[マクロ作成(E)]ボタンを押す。
 このボタンを押す前に[説明(I)]の欄に適当な覚え書きを記しておくとよい。たとえば、「Word ファイルからテキスト部分を抜き出し、テキストファイルに変換します。」などとしておく(それから[マクロ作成(E)]ボタンを押す)。
(3)すると次のように表示される。

 Sub MAIN

 End Sub

(4)この2行の間に次のようなマクロの記述を挿入する。

a$ = FileName$(0)
Fname$ = InputBox$("ファイル名を入力してください。", "テキスト部分のみ
の保存", a$)
FileSaveAs .Name = Fname$, .Format = 2, .LockAnnot = 0, .Password = 
"", 
.AddToMru = 1, .WritePassword = "", .RecommendReadOnly = 0, 
.EmbedFonts = 0,
.NativePictureFormat = 0, .FormsData = 0, .SaveAsAOCELetter = 0
FileClose
(5)この結果、以下のようなマクロ定義が完成する。

Sub MAIN
a$ = FileName$(0)
Fname$ =InputBox$("ファイル名を入力してください。", "テキスト部分のみ
の保存", a$)
FileSaveAs .Name = Fname$, .Format = 2, .LockAnnot = 0, .Password = 
"", 
.AddToMru = 1, .WritePassword = "", .RecommendReadOnly = 0, 
.EmbedFonts = 0,
.NativePictureFormat = 0, .FormsData = 0, .SaveAsAOCELetter = 0
End Sub

(6)早速、これを保存する。

 これで“MakeTextFile”というマクロが定義できた訳であるが、更に使いやすくするためにメニューバー上に、この機能を即実行できるようなシンボル(ホットキー)を登録することにしよう。それには次のようにする(注)。

(1)メニューバーの[表示(V)]から[ツールバー(T)]を選択し、[設定(C)]ボタンを押す。
(2)すると[ユーザー設定]の表が表示されるので、[ツールバー]のタブ上にある[分類(C)]の中から「マクロ」を選ぶ。
(3)すると[マクロ(O)]に一連のマクロ名が表示されるので、その中から先ほど作った“MakeTextFile”を選び出す。
(4)その文字列自体をマウスカーソルでセレクトし、標準メニューバー上までドラッグする(まあ、一番左端あたりに置くのがいいでしょう)。
(5)すると[ボタンの設定]が表示されるので(下図参照)、沢山あるシンボルの中から適当なシンボルを選択し[割り当て(A)]ボタンを押す(フロッピーに矢印の付いたものなどどうでしょう)。


(6)これで“MakeTextFile”のコマンド実行ボタンが完成したことになる。

 以後はこの新たに作ったメニューバー上のシンボル(ホットキー)をキックするだけで、Word上の現ファイルから標準のテキストファイルを簡単に作ることができるようになる。

 実際にこのマクロを使ってみると、
[テキスト部分のみの保存]という表示が出て、そこにWordファイルの名前が、たとえば

   C:\MyDoc\Soft\Doc\FRUITS.DOC

のように表示されるはずである。そこで、テキストファイルを作ることを明示するため最後の“DOC”を“txt”に変更してから[OK]ボタンを押せばよい。すると、Wordは「この文書にはテキスト形式では保存できない書式が設定されています FRUITS.txt への変更を保存しますか?」と聞いてくるので、[いいえ(N)]のボタンを押します。

 この機能で、希望のテキストファイルが何時でもキー一発(?)で作れるようになります。

 なお、マクロ定義の中の .Format = 2, を Format = 3 に変更すると、行末に改行コードが挿入されるマクロになります。

 どうです。貴方(女)も一度やってみませんか。そして無用な添付ファイルを使うのはやめにしましょう。■



【注】Word97(Office97)の場合は、以下のように多少手続きが異なる。

(1)メニューバーの[表示(V)]から[ツールバー(T)]を選択し、[ユーザー設定(C)]ボタンを押す。
(2)すると[ユーザー設定]の表が表示されるので[コマンド]のタブ上にある[分類(G)]の中から「マクロ」を選ぶ。
(3)すると[コマンド(D)]に一連のマクロ名が表示されるので、その中から先程作った“MakeTextFile”を選び出す。
(4)その文字列自体をマウスカーソルでセレクトし、標準メニューバー上までドラッグする。
(5)すると[Normal.NewMacros.MakeTextFile]という名のボタンになる。この表示を変更したければ[選択したボタンの編集(M)]を押す。
 [ボタンイメージの変更(B)]を押すとボタンの候補一覧が表示されるので、沢山あるシンボルの中から適当なシンボルを選択しクリックする(フロッピーに矢印の付いたものなどどうでしょう)。シンボルと名前が同時に表示されているのはうるさいから[Normal.NewMacros.MakeTextFile]という名前を消したければ、もう一度[選択したボタンの編集(M)]を押してから[既存のスタイル(U)]ボタンを押せばよい。
(6)これで“MakeTextFile”のコマンド実行ボタンが完成したことになる。

 Word95までは、マクロの定義ではWord Basicと呼ばれているものが使われていた。しかし、Word97(Office97)からは Visual Basic for Application(VBAと略す)が採用されている。そのため、Word95までのマクロは、そのままではWord97以降では動作しない。Word97から古いWordのファイルを読み込んだ時点で、マクロの変換処理を行うのであるが、そこで保存を行うとVBA形式として保存されWord95などのマクロは実行できないようである。

 とりあえず、保存するファイル名を決め打ちにした(たとえば TextFile.txt とする)簡易版マクロを以下に示す(どなたか、Word97に詳しい方の手直しをお願いしたい)。

Sub MakeTextFile()
'
' "&chr(10)&"Word ファイルからテキスト部分のみを抜き出し
' TextFile.txt というファイルを作る。
'
ActiveDocument.SaveAs FileName:="TextFile.txt", _
 FileFormat:=wdFormatText, _
 LockComments:=False, Password:="", _
 AddToRecentFiles:=True, WritePassword:="", _
 ReadOnlyRecommended:=False, _
 EmbedTrueTypeFonts:=False, _
 SaveNativePictureFormat:=False, _
 SaveFormsData:=False, SaveAsAOCELetter:= _
 False
ActiveDocument.Close
End Sub

(終り)