
希望する事は
ファイルを保存するフォルダを指定し、
ファイル名(インプットボックスをつかって
変数として入力させたもの)をつけて保存したい。
フォルダは事前に作成してあるが
保存したい場所はそのときによってまちまちなので
保存するたびにフォルダを指定したい。
具体的には
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
SaveAsの保存先について
Visual Basic(VBA)
-
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存
Visual Basic(VBA)
-
4
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
5
ファイル保存時のダイアログ表示フォルダを変更したい
Visual Basic(VBA)
-
6
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
7
Excel VBA セルの値をファイル名にして保存するには
Visual Basic(VBA)
-
8
エクセルマクロで任意のファイル名をつけて保存したい
Visual Basic(VBA)
-
9
VBAでSaveAs使用し、指定していないのにデスクトップに保存される理由
PowerPoint(パワーポイント)
-
10
セルの値を使ってファイルを保存
Excel(エクセル)
-
11
VBAでセル値からフォルダ名を取得するコードについて
Excel(エクセル)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
保存先のパスを変数に格納して使用する方法
Visual Basic(VBA)
-
14
パスをセルから取得し保存 VBA
その他(Microsoft Office)
-
15
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
エクセルVBAで開いているファイルをコピーする方法
Visual Basic(VBA)
-
19
EXCELで日付を自動でファイル名にしたい
Excel(エクセル)
-
20
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ファイル名と同名のフォルダを...
-
5
会社のネットワーク上のファイ...
-
6
Excelのハイパーリンクについて...
-
7
お助けください!VBAのファイル...
-
8
Access VBA で フォルダ権限...
-
9
FTPでフォルダごとにパスワード...
-
10
バッチファイルで指定フォルダ...
-
11
カレントフォルダって?
-
12
ディレクトリ名変更してコピー...
-
13
VBScriptで作るファイル移動プ...
-
14
最下層のファイルを一緒の階層...
-
15
MinGWで正規表現(regex.h)がし...
-
16
vbsで選択ダイアログを表示した...
-
17
exclude xcopy 除外フォルダ指...
-
18
Debug フォルダは消していいの?
-
19
フォルダの中身がカラか調べる
-
20
VBA フォルダの複数選択ができない
おすすめ情報
公式facebook
公式twitter