Application.GetSaveAsFilename メソッド

本ページには広告が含まれています。

ユーザーからファイル名を取得するために、[名前を付けて保存] ダイアログ ボックスを表示します。ダイアログ ボックスで指定したファイルは、実際には保存されません。保存処理をするにはWorkbook.SaveAs メソッドを使います。

構文
  1. UString = Application.GetSaveAsFilename( InitialFilename, FileFilter, FilterIndex, Title, ButtonText )
引数
InitialFilename 省略可
既定値として表示するファイル名を指定します。 この引数を省略すると、作業中のブックの名前が使われます。
FileFilter 省略可
ファイルの候補を指定する文字列(ファイルフィルター文字列)を指定します。最大長は255文字です。
FilterIndex 省略可
引数FileFilterで指定したファイルフィルター文字列の中で、1から何番目の値を既定値とするかを指定します。この引数を省略するか、ファイルフィルター文字列の数より大きい数値を指定すると、最初のファイルフィルター文字列が既定値となります。
Title 省略可
ダイアログボックスのタイトルを指定します。この引数を省略すると既定のタイトルが使用されます。
ButtonText 省略可
Macintoshでのみ指定できます。
戻り値
ファイル名に指定したパス。キャンセルした場合はFalseが返る。

Application オブジェクトを返すメソッド・プロパティ

Application.GetSaveAsFilename メソッド
Microsoft Excelアプリケーションを表すApplication オブジェクトを返します。
Borders.Application プロパティ
Excel.GetSaveAsFilenameが属するApplication オブジェクトを返します。

ダイアログボックスの初期フォルダ

ダイアログボックスの初期フォルダは、以下のプログラムで取得できます。

UWSC
PRINT Excel.Application.DefaultFilePath

プログラム実行例

[名前を付けて保存]ダイアログを表示して保存

[名前を付けて保存]ダイアログを表示し、既定値として売上一覧.xlsxという名前を指定します。

UWSC
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Add()

DIM path = Excel.Application.GetSaveAsFilename("売上一覧.xlsx", "Excel ブック, *.xlsx, すべてのファイル, *.*")

IFB path = FALSE THEN
	PRINT "キャンセルされました"
ELSE
	Excel.ActiveWorkbook.SaveAs(path)
ENDIF
使用関数
解説

[名前を付けて保存]ダイアログを表示して保存(同名ファイルの競合対策)

GetSaveAsFilenameの第一引数(InitialFilename)で重複しないファイル名を既定値として入力します。

SaveAsでファイル名が重複する場合置き換えますか?いいえを選択するとエラーが発生するので、その際は再度ファイル名を入力するダイアログボックスを表示する。

UWSC
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Add()

DIM folderspec = Excel.Application.DefaultFilePath
DIM filename = Excel.ActiveWorkbook.Name

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
path = uniqueFilename(FSO.BuildPath(folderspec , filename + ".xlsx"))

REPEAT
	path = Excel.Application.GetSaveAsFilename(FSO.GetFileName(path), "Excel ブック,*.xlsx")
	IFB path = FALSE THEN
		PRINT "キャンセルされました。"
	ELSE
		TRY
			PRINT Excel.ActiveWorkbook.SaveAs(path)
		EXCEPT
			CONTINUE
		ENDTRY
	ENDIF
UNTIL TRUE

//////////////////////////////////////////////////
// 【引数】
//   path : ファイルのパス 
// 【戻り値】
//   重複しないファイル名 
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	IFB FSO.FileExists(path) THEN
		DIM fol = FSO.GetParentFolderName(path)
		DIM filename = FSO.GetBaseName(path)
		DIM extension = FSO.GetExtensionName(path)
		DIM i = 2
		WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
			i = i + 1
		WEND
		RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
	ELSE
		RESULT = path
	ENDIF
FEND
使用関数

関連記事

XLOPEN関数 (スクリプト関数)
XLOPEN関数は、Excelまたは OOoのCalcを起動する関数です。第一引数に読み込むファイル名(新規の場合は省略)、第二引数に起動フラグ、第三引数以降にパラメータ(パスワードや読み込み専用)を指定します。
XLSETDATA関数 (スクリプト関数)
Excelのセルに値を代入します。
XLSHEET関数 (スクリプト関数)
PageSetup オブジェクト
Excel のシートの印刷設定を表すオブジェクトです。シートの用紙サイズ、余白、方向、印刷タイトルなど、印刷に関連する設定を管理するのに使用されます。
Application オブジェクト
Excel全体を表すオブジェクトです。Excel全体に対しての操作、設定変更をしたい場合に使います。
Border オブジェクト
上下左右一つひとつの罫線を表します。
Characters オブジェクト
オブジェクトに含まれる文字列の文字を表します。
Charts オブジェクト
指定されたブックまたは作業中のブックにあるすべてのグラフシートのコレクションです。
Comment オブジェクト
セルに関連付けられたコメントを表します。
FullSeriesCollection オブジェクト
グラフのデータ系列を表すコレクション。