
希望する事は
ファイルを保存するフォルダを指定し、
ファイル名(インプットボックスをつかって
変数として入力させたもの)をつけて保存したい。
フォルダは事前に作成してあるが
保存したい場所はそのときによってまちまちなので
保存するたびにフォルダを指定したい。
具体的には
C:\入力済みデータ\【○○】としたいのですが
この【○○】の部分を、そのときに応じて選択するにはどうすればいいでしょうか。
または、浅知恵で
Application.Dialogs(xlDialogSaveAs).Show arg1:="c:\"
というかたちでダイアログボックスを出すまでは出来たのですが
ファイル名は空欄になってしまいますよね。
InputBoxでファイル名を変数として入力させたものを
上のファイル名に入れることは可能ですか?
どうぞよろしくお願いします。

No.5ベストアンサー
- 回答日時:
これでできませんか?
まず条件どおり、C:\入力済みデータ の中にいくつかのフォルダを用意しました。
Excel 2003 を新規に立ち上げ、新規ワークブックに標準モジュールを挿入し、以下のコードを書き込んで実行しました。
Sub hoge()
Dim initPath As String
initPath = "C:\入力済みデータ"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFilename(initPath, "Excel File (*.xls),*.xls")
If Not (saveFilePath = "False") Then
ThisWorkbook.SaveAs saveFilePath
End If
End Sub
"ファイル名を指定して保存" のダイアログが表示され、初期フォルダとして C:\入力済みデータ が開かれています。
ファイル名は何も指定されていません。
ダイアログの中には当然、先に作っておいたいくつかのサブフォルダが一覧表示されているので、ユーザーは
1) サブフォルダを選択する。
2) ファイル名を入力する。
3) [保存] ボタンをクリックする。
というアクションを行う。
私のところではダイアログ表示時の初期フォルダとして My Documents ではなく、きちんと C:\入力済みデータ が開かれましたよ。
この回答への補足
いろいろとありがとうございます。
言葉足らずで申し訳ないのですが
インプットボックスで入力させたファイル名は
一度「ファイル集計」シートの「セルB2」に格納しています。
このデータは
ファイルナンバー = Range("B2")として
ChDir "C:\入力済みデータ"
ActiveWorkbook.SaveAs Filename:=ファイルナンバー & ".xls"
のように一度入力済みデータフォルダに保存します。
ただし、入力済みデータフォルダに保存させようとしたときに、
もし同名のファイルが入力済みデータフォルダ存在していた場合、
サブナンバーをつけるようにしているのです。
(たとえば123-456というファイルがすでに入力済みフォルダに存在していて
また123-456というファイル名で保存しようとした場合
「セルB2」の値を123-456-1という値に変え、123-456-1というファイル名で保存させる)
方法は以下のような感じです。(他にいいやり方があるかも知れませんが汗)
Sub ファイル検索()
Dim i As Integer
Dim ファイルナンバー As String
Sheets("ファイル集計").Select
ファイルナンバー = Range("B2")
With Application.FileSearch
.LookIn = "C:\入力済みデータ"
.SearchSubFolders = False
.Filename = ファイルナンバー & "*.xls"
.FileType = msoFileTypeExcelWorkbooks
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox ("サブナンバーに" & .FoundFiles.Count & " をつけて保存します")
Sheets("ファイル集計").Select
Range("B2") = ファイルナンバー & "-" & .FoundFiles.Count
End If
End With
End Sub
無事に入力済みデータフォルダに保存されたあと、
同じファイルを、もうひとつ納品用のフォルダに保存したいのです。
入力済みデータフォルダには、前述の理由で、以前入力したデータも
蓄積していかなければなりません。
(サブナンバーをつけることが出来無いので)
ですが、たとえば10月に入力した部分だけを納品したいとき
2007-10というようなフォルダにまとめて納品したいというのが希望です。
ですから、2007-10というフォルダを作り、そこに保存をしたいのです。
教えていただいたように
保存する際にファイル名を入力させたのでは
サブナンバーがつかないし、ファイルのB2セルにもファイル名を反映できないのではないかと思うのですが…
No.6
- 回答日時:
要するに、ExcelVBAで、フォルダを指定できる画面を表示できれば良いんですよね・・・
「Access2003 VBA でフォルダ参照ダイアログについて」
(http://okwave.jp/qa3341236.html)
では駄目?
No.4
- 回答日時:
VB6もですがVBAではフォルダだけを選択させるのは、大変なんです。
ファイル名の入力にInputBoxを使ってますが
代わりにフォームにして
ファイル名とフォルダ名を入力させてはどうでしょう?
使用するコントロールは
ファイル名:テクストボックス
フォルダ名:リストボックスまたはコンボボックス
とすれば、ファイル名は自由に入力できて、かつフォルダ名は規定のものから選択するように出来ます。

No.3
- 回答日時:
> の【○○】の部分に
> 保存指定フォルダ = InputBox("保存するフォルダ名を半角で入力してください ", "保存フォルダ入力")
すみません。ユーザーにはどこまでさせたくて、システム側はどこまでしてあげるのかの境界線がわからなくなりました。。。
ファイル名はユーザーに指定させたくなくて、その一個上のフォルダ名だけを指定させたいってこと?
つまり、c:\aaa\bbb\ccc\ddd.xls のうち ccc の名前だけをユーザーに指定させたい?
Dim initPath As String
initPath = "C:\入力済みデータ\hoge.xls"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFileName(initPath, "Excel File (*.xls),*.xls")
ThisWorkbook.SaveAs saveFilePath
上記 2行目。
一階層減らして、代わりにファイル名を固定にしました。
これを実行して名前を付けて保存ダイアログを開いてみてください。
初期パスとして一階層上の "C:\入力済みデータ\" が開かれていて、そのサブフォルダ一覧がダイアログに表示されています。
更に、ファイル名も入力済みの状態です。
あとは質問者さんが言うように InputBox でユーザーに入力させたいフォルダ名をこのサブフォルダ一覧の中からマウスのダブルクリックで開いて [保存] ボタンを押すだけ。
操作手順的にも一般の Windows アプリの手順と同じなのでユーザーが混乱する事もないかと。
この回答への補足
ありがとうございます。
やってみましたが、保存先として開いたのはmydocumentになってしまい
ファイル名はhoge.xlsと出てしまうのですが…
もう一度整理してみます。
手順としては
データを入力したあと
(1)インプットボックスでファイル名(↓ではファイルナンバーになっていますが…)を入力させる
ファイルナンバー = InputBox("ファイルナンバーを半角で入力してください ", "ファイルナンバー入力")
(2)保存する場所を選択させる
C:\入力済みデータ…この下には10-01、10-02などのフォルダがすでにあるので、この中から選択させたい
選択が出来ないなら、インプットボックスでフォルダ名を指定させても可
保存指定フォルダ = InputBox("保存指定フォルダを半角で入力してください ", "保存指定フォルダ入力"…などで
なので、ファイル名を固定されると困ってしまうのです。
もう、どうしたらいいかわからなくなりました(泣)
No.2
- 回答日時:
>Application.Dialogs(xlDialogSaveAs).Show arg1:="c:\"
というかたちでダイアログボックスを出すまでは出来たのですが
ファイル名は空欄になってしまいますよね。
その空欄にファイル名を入れるのではないですか。
「保存先」に下記例では「新しいフォルダ」に限定され、そのフォルダのファイルがその下の枠内に表示されている。
Sub test01()
Application.Dialogs(xlDialogSaveAs).Show arg1:="C:\Documents and Settings\xxxx\デスクトップ\新しいフォルダ"
End Sub
ーーー
もっと、ファイル名が例えば、fff○○の○○だけ入力したいのなら
Sub test01()
Application.Dialogs(xlDialogSaveAs).Show arg1:="C:\Documents and Settings\OTO\デスクトップ\新しいフォルダ\fff"
End Sub
とすれば、「ファイル名」欄に、fffが入って入力待機状態になります。
この回答への補足
さっそくのご教示ありがとうございます。
やってみたのですが、思ったようにできませんでした。
もっと、ファイル名が例えば、fff○○の○○だけ入力したいのなら
Sub test01()
Application.Dialogs(xlDialogSaveAs).Show arg1:="C:\Documents and Settings\OTO\デスクトップ\新しいフォルダ\fff"
End Sub
とすれば、「ファイル名」欄に、fffが入って入力待機状態になります。
↑の「fff」の部分を、
ファイルナンバー = InputBox("ファイルナンバーを半角で入力してください ", "ファイルナンバー入力")
という形で入力させた値にしたいのですが…
これだと、ファイル名欄に"ファイルナンバー"とテキストが入ってしまうのです。

No.1
- 回答日時:
InputBox を使う事が希望内容に入ってますが、使わなくちゃダメですか?
通常の 「名前を付けて保存」 ダイアログを使っちゃダメですか?
Dim initPath As String
initPath = "C:\入力済みデータ\【○○】\"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFileName(initPath, "Excel File (*.xls),*.xls")
ThisWorkbook.SaveAs saveFilePath
最後の ThisWorkbook は保存対象のブックに合わせて適宜変更。
この回答への補足
さっそくのご教示ありがとうございます。
Dim initPath As String
initPath = "C:\入力済みデータ\【○○】\"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFileName(initPath, "Excel File (*.xls),*.xls")
ThisWorkbook.SaveAs saveFilePath
の【○○】の部分に
保存指定フォルダ = InputBox("保存するフォルダ名を半角で入力してください ", "保存フォルダ入力")
という形で入力させた値を入れるにはどうしたらいいでしょうか…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
このQ&Aを見た人はこんなQ&Aも見ています
-
SaveAsの保存先について
Visual Basic(VBA)
-
ファイル保存時のダイアログ表示フォルダを変更したい
Visual Basic(VBA)
-
excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存
Visual Basic(VBA)
-
-
4
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
9
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
10
エクセルVBAでパスの¥マークについて
Access(アクセス)
-
11
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報