即効テクニック |
ブックに名前を付けて保存するときはSaveAsメソッドです。 たとえば次のコードは、アクティブブックに「Sample1.xls」という名前を付けて保存します。Sub Sample1() ActiveWorkbook.SaveAs "Sample1.xls" End Subこのとき、ファイル名が「Sample.xls」のように保存するフォルダのパスを指定していないので、この「Sample.xls」はカレントフォルダに保存されます。 保存するフォルダを特定して保存したいときは、次のようにフォルダのパスを指定します。 次のコードは、アクティブブックを「C:\Data」フォルダに「Sample.xls」という名前で保存します。Sub Sample2() ActiveWorkbook.SaveAs "C:\Data\Sample1.xls" End Subここまでは簡単です。 ではデスクトップやマイドキュメントフォルダに保存したいときはどうしたらいいでしょう。 デスクトップフォルダのパスは 「C:\Documents and Settings\<ログインユーザー名>\デスクトップ\」 ですから、パソコンによって異なります。 「C:\Data\Sample1.xls」のように、あらかじめVBAのコードで特定はできません。 そんなときは、WSH(Windows Scripting Host)を使います。 次のコードは、アクティブブックを「デスクトップ」フォルダに「Sample.xls」という名前で保存します。Sub Sample3() Dim Path As String, WSH As Variant Set WSH = CreateObject("Wscript.Shell") Path = WSH.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Path & "Sample1.xls" Set WSH = Nothing End Subもちろん、ブックの保存だけではなく、次のように[ファイルを開く]ダイアログボックスを使うときにも有効です。 次のコードは、[ファイルを開く]ダイアログボックスで「マイドキュメント」フォルダを開きます。Sub Sample4() Dim Path As String, WSH As Variant, OpenFileName As String Set WSH = CreateObject("Wscript.Shell") Path = WSH.SpecialFolders("MyDocuments") & "\" ChDir Path OpenFileName = Application.GetOpenFilename("Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If Set WSH = Nothing End SubWSHのSpecialFoldersプロパティでは、次のようなフォルダを取得できます。 フォルダ :引数 すべてのユーザーに共通のデスクトップ: AllUsersDesktop すべてのユーザーに共通のプログラムメニュー:AllUsersPrograms すべてのユーザーに共通のスタートアップ: AllUsersStartup ログインユーザーのデスクトップ :Desktop ログインユーザーのプログラムメニュー: Programs ログインユーザーのスタートアップ :Startup お気に入り :Favorites フォント :Fonts マイドキュメント: MyDocuments 最近使ったファイル: Recent 送る: SendTo スタートメニュー: StartMenu 新規作成のテンプレート: Templates アプリ用のデータ :AppData