Base自分用のナレッジベース。Server、オープンソース系のシステムやフリーソフトに関する情報、iPhone、Androidスマホ便利情報など役立つ情報などを覚書しておくためのブログ。リニューアルされました。リダイレクトされます。ExcelのVBAを使用して[名前を付けて保存]ダイアログボックスを表示し、保存するファイル名として入力された文字列を取得するサンプルプログラム。ExcelのVBAではAccessと違って最初から[名前を付けて保存]ダイアログボックスを開くための"GetSaveAsFilename"メソッドが用意されている。このメソッドを使うことで容易に[名前を付けて保存]ダイアログボックスのインターフェースを利用することができる。VBA:[ファイルを開く]ダイアログボックスを表示(GetSaveFilenameメソッド)してファイル名を取得する方法」のついでに[名前を付けて保存]ダイアログボックスについても覚書しておく。以下に"GetSaveAsFilename"メソッドの説明とサンプルプログラムを記述する。GetSaveAsFilenameメソッドについてGetSaveAsFilenameメソッドは、5つの引数を指定できるが、Windows版のExcelでは4つの引数のみ有効となる。残りの1つの引数はMAC版のExcel用に用意された引数となっている。GetSaveAsFilenameメソッドの書式GetSaveAsFilenameメソッドの書式は以下のとおり。=Application.GetSaveAsFilename(InitialFilename,FileFilter,FilterIndex,Title,ButtonText)以下に各引数について説明する。保存するファイル名の初期値。保存するファイル名が最初から決まっている場合や、想定できる名前の場合は、この引数を指定して[名前を付けて保存]ダイアログボックスの[ファイル名]ボックスにあらかじめファイル名を設定しておくことができる。FileFilter引数[名前を付けて保存]ダイアログボックスで指定できるファイルの種類を制限するための引数。指定できるファイルをCSVファイルだけに限定したいとか、ある特定の拡張子のファイルだけに限定したいときに指定する。[名前を付けて保存]ダイアログボックスの[ファイルの種類]コンボボックスの設定値。指定の書式は以下のとおり。"表示文字列,指定できる拡張子"例:"CSVファイル,*.csv"1つのフィルタに複数の拡張子を指定することもでき、その際には拡張子を";"(セミコロン)で区切る。CSVファイルとTXTファイルの2つを指定できるようにするのであれば、"CSVもしくはTXTファイル,*.csv;*.txt"また、複数のフィルタを指定することもできる。CSVファイルとExcelファイルの2つのフィルタを用意したければ、"CSVファイル,*.csv,Excelファイル,*.xls;*.xlt"このように指定した場合、[名前を付けて保存]ダイアログボックスの[ファイルの種類]コンボボックスの一覧に"CSVファイル"と"Excelファイル"の2つがリストとして表示され、コンボボックスでどちらかを選択できるようになる。前述のFileFilter引数で複数のフィルタを設定した場合に、初期表示するフィルタの番号を指定する。フィルタを"CSVファイル,*.csv,Excelファイル,*.xls;*.xlt"と指定した場合、"CSVファイル"と"Excelファイル"の2つのフィルタが[ファイルの種類]コンボボックスに表示されるが、この2つのうちどちらのフィルタを[名前を付けて保存]ダイアログボックスが開いたときに初期表示として表示させるかを番号で指定する。"2"を指定すれば、初期表示されるフィルタは、"Excelファイル"になる。この引数を省略した場合は、最初のフィルタが初期表示される。Title引数[名前を付けて保存]ダイアログボックスのタイトルバーに表示する文字列を指定する。この引数を省略した場合は、既定のタイトルである"名前を付けて保存"が設定される。ButtonText引数[開く]ボタンの表示文字列を指定できる引数で、Windows版では指定しても無効になり、MAC版のみ有効となる。GetSaveAsFilenameメソッド実行時のカレントフォルダの変更[名前を付けて保存]ダイアログボックスを表示した際のカレントフォルダを指定したい場合は、"ChDir"を使用して、[名前を付けて保存]ダイアログボックスを表示する前にカレントフォルダを変更しておく。カレントフォルダをデスクトップフォルダなど、Windowsの特殊フォルダにしたい場合は、以下の記事を参考。「VBA:デスクトップフォルダやマイドキュメントフォルダなどWindowsの特殊フォルダのパスをVBAで取得する方法」GetSaveAsFilenameメソッドを使用したサンプルプログラム1以下のサンプルは最もシンプルな[名前を付けて保存]ダイアログボックスの表示例で、フィルタを設定せず"全てのファイル(*.*)"を指定できる。カレントフォルダをデスクトップフォルダに変更してからダイアログボックスを表示している。"キャンセルがクリックされました。SubGetSaveAsFilenameメソッドを使用したサンプルプログラム2指定できるファイルの種類としてCSVファイルとTXTファイルだけを指定できるように設定。ファイル名の初期値として"sample.csv"を指定した。"キャンセルがクリックされました。SubGetSaveAsFilenameメソッドを使用したサンプルプログラム3指定できるファイルの種類として"CSVファイルもしくは、TXTファイル"と"Excelファイル"の2つの種類を設定。[名前を付けて保存]ダイアログボックスのタイトルバーの文字列も設定。"保存するファイルの名前を指定してください。"キャンセルがクリックされました。Accessでは"WIZHOOK"なんていう非公開オブジェクトを操作することによって[ファイルを開く]や[名前を付けて保存]ダイアログボックスを表示しなければならないが、Excelは、あらかじめメソッドが用意されている。同じMicrosoft製品で、しかもOfficeファミリーなのにどうしてAccessには用意されていないかがとても不思議。データベースインポート位置webサイトウィンドウサイズ端末にAPNが正しく設定されていません。(11/25)プロフィールこのブログの中の人:billyboyこのブログを見に来てくれてありがとうございます。このブログの中の人はExcel、AccessのVBAに関するカスタマーサポート、技術ドキュメントのの作成業務を経験後、開発系SEを経て現在は金融系企業のシステム運用/保守SEとして働いています。当初自分が困ったときに解決した方法や社内/外からの技術的な問い合わせに回答した時に作ったプログラムなどを自分用の備忘録としてこのブログを開設しました。たくさんの方に見に来ていただけてることに気づいてからはなるべく誰が見てもわかるような記事内容にすることを意識して書いています。