こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル、VBAを使ってのファイル保存。

エクセルでファイル(既存)を開いたら
まず「名前を付けて保存」をして
新しく作ったファイルで作業を進めたいのですが
毎回保存のファイル名が変わるので
固定の名前での記述(VBA)が出来ません。

そこで、保存手前の段階である
ダイアログボックスを表示させた状態で終わらせる
というマクロは出来るのでしょうか?
(保存先を決めたりファイル名を入力する状態)

色々試してみたのですが、どうにもうまく行かず…
皆さんの知恵をお借りしたいです。
宜しくお願いします。

投稿日時 - 2005-03-30 19:19:53

QNo.1301205

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

>「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

投稿日時 - 2005-03-31 20:40:47

お礼

ありがとうございます。
こんな方法もあるんですね。
さっそく試してみます!

投稿日時 - 2005-04-01 20:22:12

ANo.3

こんばんは。

>毎回保存のファイル名が変わるので
>固定の名前での記述(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 でもってこれます。

どうしてこのような質問をしたのかも少し詳しく説明していただければ、
より的確な回答が寄せられると思います。
以上です。

投稿日時 - 2005-03-30 20:34:04

補足

さっそくの回答ありがとうございます。
taocatさんの教えて下さったもので思い描いていた
感じになりました。
「保存しました」「キャンセルしました」
なんてメッセージが出るのも想像を超えていたので
嬉しいかぎりです。
本当にありがとうございますっ。

PS。わかりづらい説明になってしまったみたいで
申し訳なかったです。
一応、こんな感じという説明だけ…↓


>毎回保存のファイル名が変わる

というのは、毎月データを更新している為
「3月度」「4月度」という風にファイル名が変更している状態です。

>固定の名前での記述(VBA)が出来ません

これは、私が参考に見ていたVBAの本の中では
ファイル名を指定して保存する方法しか記述されていなかったので…。

投稿日時 - 2005-03-30 20:45:21

ANo.2

パスがあらかじめわかっているのであれば
Inputbox関数でOKだとおもいますが。

http://www.bcap.co.jp/hanafusa/VBHLP/Fileopen.htm
が参考になると思います。

尚、標準モジュールに書くのであればPrivateをPublicに変えた方がよいでしょう。

OS、Officeバージョンの記載がありませんでしたので
あとは勉強ということで各自ロジックを完成させてください。

投稿日時 - 2005-03-30 19:54:09

お礼

回答ありがとうございました。
参考アドレス先も読ませて頂きました。
何やら難しそうですが(私には)
勉強勉強。頑張ります!

投稿日時 - 2005-03-30 21:00:24

ANo.1

単純に
Sub sample()
SendKeys "%FA"
End Sub

投稿日時 - 2005-03-30 19:28:12

お礼

回答ありがとうございました。

色々悩んであれこれ試しましたが
こんな方法があったとは驚きましたっ。
ホントありがとうございます。

投稿日時 - 2005-03-30 21:03:41

あなたにオススメの質問