- 締切済み
エクセル、VBAを使ってのファイル保存。
エクセルでファイル(既存)を開いたら まず「名前を付けて保存」をして 新しく作ったファイルで作業を進めたいのですが 毎回保存のファイル名が変わるので 固定の名前での記述(VBA)が出来ません。 そこで、保存手前の段階である ダイアログボックスを表示させた状態で終わらせる というマクロは出来るのでしょうか? (保存先を決めたりファイル名を入力する状態) 色々試してみたのですが、どうにもうまく行かず… 皆さんの知恵をお借りしたいです。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hana-hana3
- ベストアンサー率31% (4940/15541)
>「3月度」「4月度」という風にファイル名が変更している状態です。 下記のような方法もあります。 文字列関数で現在のファイル名を操作しても構いませんし、ファイル名の変更方法はいくつかあります。 Sub test() 'ファイル固定名 Dim Fname1 As String ' Dim NewName As String Fname1 = "売上集計" NewName = Format(Month(Date), "00") NewName = InputBox("新規月度設定" & vbLf & Fname1 & NewName & "月度" _ , "新規ファイル保存", NewName) NewName = ThisWorkbook.Path & "\" & Fname1 & NewName & "月度" & ".xls" ThisWorkbook.SaveAs NewName End Sub
- taocat
- ベストアンサー率61% (191/310)
こんばんは。 >毎回保存のファイル名が変わるので >固定の名前での記述(VBA)が出来ません と >ダイアログボックスを表示させた状態で終わらせる これがどういう関係があるのかちょっと分からないのですが、 名前をつけて保存のダイアログの表示は以下のようにすれば出来ます。 ------------------------------------------------ Sub Test() Dim dlgSave dlgSave = Application.Dialogs(xlDialogSaveWorkbook).Show If dlgSave Then MsgBox ThisWorkbook.Name & "を保存しました" Else MsgBox "キャンセルしました" End If End Sub ------------------------------------------------- それから、「固定の名前での記述(VBA)をが出来ません」これについてですが、 コードの書いてあるブックの名前を使うということは一般的にはあまりないと思いますよ。 もし使いたければ、上記コードのように、ThisWorkBook.Name でもってこれます。 どうしてこのような質問をしたのかも少し詳しく説明していただければ、 より的確な回答が寄せられると思います。 以上です。
補足
さっそくの回答ありがとうございます。 taocatさんの教えて下さったもので思い描いていた 感じになりました。 「保存しました」「キャンセルしました」 なんてメッセージが出るのも想像を超えていたので 嬉しいかぎりです。 本当にありがとうございますっ。 PS。わかりづらい説明になってしまったみたいで 申し訳なかったです。 一応、こんな感じという説明だけ…↓ >毎回保存のファイル名が変わる というのは、毎月データを更新している為 「3月度」「4月度」という風にファイル名が変更している状態です。 >固定の名前での記述(VBA)が出来ません これは、私が参考に見ていたVBAの本の中では ファイル名を指定して保存する方法しか記述されていなかったので…。
- stouma
- ベストアンサー率35% (142/399)
パスがあらかじめわかっているのであれば Inputbox関数でOKだとおもいますが。 http://www.bcap.co.jp/hanafusa/VBHLP/Fileopen.htm が参考になると思います。 尚、標準モジュールに書くのであればPrivateをPublicに変えた方がよいでしょう。 OS、Officeバージョンの記載がありませんでしたので あとは勉強ということで各自ロジックを完成させてください。
お礼
回答ありがとうございました。 参考アドレス先も読ませて頂きました。 何やら難しそうですが(私には) 勉強勉強。頑張ります!
- hana-hana3
- ベストアンサー率31% (4940/15541)
単純に Sub sample() SendKeys "%FA" End Sub
お礼
回答ありがとうございました。 色々悩んであれこれ試しましたが こんな方法があったとは驚きましたっ。 ホントありがとうございます。
お礼
ありがとうございます。 こんな方法もあるんですね。 さっそく試してみます!