「word vbaで選択文字をファイル名にする」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
作成している文書上で、何らかの文字列を選択しておいて、その文字列をファイル名にして保存するWordマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
この件に限らず、ファイル処理系・ファイル保存系のマクロというのは、具体的な仕様をどうするのかマクロを作る前に決めるべきことがたくさんあります。
どのフォルダに保存するのか、そのフォルダにもしも同じ名前のファイルが存在していたときはどうするのか、ファイル名として使うことのできない文字列が選択されていたときはどうすればいいのか、などなど。
選択された文字列をファイル名に設定して名前を付けて保存ダイアログを表示するサンプルマクロ
いきなり本当に保存を行うのならば、こういった仕様を明確にした上で、マクロ記録機能で作られるコードを修正すればできるはずですので、ここでは、選択されている文字列をファイル名に設定した状態で[名前を付けて保存]ダイアログを表示するマクロをご紹介しておきましょう。
Dim txt As String
txt = Selection.Text
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = txt 'ファイル名の設定
If .Show = False Then
Exit Sub 'キャンセル
Else
.Execute '保存
End If
End With
End Sub上記のマクロを実行すると、文書上で選択されている文字列が[ファイル名]欄に設定された状態で[名前を付けて保存]ダイアログが表示されます。
サンプルマクロの解説
String型の変数・txtに、選択されている文字列を格納して、
txt = Selection.Text
その文字列をファイル名として設定した状態で、[名前を付けて保存]ダイアログを表示します。
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = txt
Application.FileDialogプロパティは、引数に指定されたダイアログを返すプロパティです。
引数にはMsoFileDialogType列挙体として定義されている、
・msoFileDialogFilePicker
・msoFileDialogFolderPicker
・msoFileDialogOpen
・msoFileDialogSaveAs
という定数を指定でき、
上記のマクロのようにmsoFileDialogSaveAsを指定すれば、[名前を付けて保存]ダイアログを取得できます。
実際に表示を行うのは、FileDialogオブジェクトのShowメソッドです。
FileDialogオブジェクトのShowメソッドで表示されたダイアログで、[キャンセル]ボタンがクリックされたときは「0」(False)が返されるので、その場合マクロを終了しています。
If .Show = False Then
Exit Sub
そうでなかった場合、即ち[保存]ボタンがクリックされたときに、保存を実行しています。
Else
.Execute
Home » ワードマクロ・Word VBAの使い方 » Selection » 選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ