Home » ワードマクロ・Word VBAの使い方 » 選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

対象:Word2007, Word2010, Word2013

「word vbaで選択文字をファイル名にする」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

作成している文書上で、何らかの文字列を選択しておいて、その文字列をファイル名にして保存するWordマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

この件に限らず、ファイル処理系・ファイル保存系のマクロというのは、具体的な仕様をどうするのかマクロを作る前に決めるべきことがたくさんあります。

[スポンサードリンク]

どのフォルダに保存するのか、そのフォルダにもしも同じ名前のファイルが存在していたときはどうするのか、ファイル名として使うことのできない文字列が選択されていたときはどうすればいいのか、などなど。

選択された文字列をファイル名に設定して名前を付けて保存ダイアログを表示するサンプルマクロ

いきなり本当に保存を行うのならば、こういった仕様を明確にした上で、マクロ記録機能で作られるコードを修正すればできるはずですので、ここでは、選択されている文字列をファイル名に設定した状態で[名前を付けて保存]ダイアログを表示するマクロをご紹介しておきましょう。


Sub 選択文字列をファイル名にして名前を付けて保存ダイアログを表示()

 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プロパティは、引数に指定されたダイアログを返すプロパティです。

選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

引数にはMsoFileDialogType列挙体として定義されている、

選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

・msoFileDialogFilePicker
・msoFileDialogFolderPicker
・msoFileDialogOpen
・msoFileDialogSaveAs
という定数を指定でき、

上記のマクロのようにmsoFileDialogSaveAsを指定すれば、[名前を付けて保存]ダイアログを取得できます。

実際に表示を行うのは、FileDialogオブジェクトのShowメソッドです。

選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

FileDialogオブジェクトのShowメソッドで表示されたダイアログで、[キャンセル]ボタンがクリックされたときは「0」(False)が返されるので、その場合マクロを終了しています。
  If .Show = False Then
   Exit Sub

そうでなかった場合、即ち[保存]ボタンがクリックされたときに、保存を実行しています。
  Else
   .Execute

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

TrackBack:0

TrackBack URL

Home » ワードマクロ・Word VBAの使い方 » 選択文字列をファイル名にして名前を付けて保存ダイアログを表示するWordマクロ

「ワードマクロ・Word VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.