希望する事は
ファイルを保存するフォルダを指定し、
ファイル名(インプットボックスをつかって
変数として入力させたもの)をつけて保存したい。
フォルダは事前に作成してあるが
保存したい場所はそのときによってまちまちなので
保存するたびにフォルダを指定したい。
具体的には
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も見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
-
4
VBAでファイル名を指定して保存するとき
Visual Basic(VBA)
-
5
SaveAsの保存先について
Visual Basic(VBA)
-
6
【VBA】マクロの入ったファイルと同じフォルダに,出力したファイルを保存するコードについて
Visual Basic(VBA)
-
7
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
8
VBAでSaveAs使用し、指定していないのにデスクトップに保存される理由
PowerPoint(パワーポイント)
-
9
保存先のパスを変数に格納して使用する方法
Visual Basic(VBA)
-
10
VBA 新規ファイルを元ファイルと同じ場所に保存する方法
Excel(エクセル)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
エクセルをPDFにし複数のユーザーが各自の指定のデスクトップフォルダに保存するVBAを教えてください
Excel(エクセル)
-
13
VBA:ワークブックを変数でActiveにしたいのですが・・
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存
Visual Basic(VBA)
-
16
Excel VBA ステップインが途中で通常実行になってしまう
Excel(エクセル)
-
17
ワークブックに名前をつけて保存するマクロ
Excel(エクセル)
-
18
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
19
VBA 最終行に10行、行を挿入する作業。
その他(Microsoft Office)
-
20
VBAでPDFを保存する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
デスクトップの画像をhtmlに表...
-
Access VBA で フォルダ権限...
-
[VBS] Unicodeの文字化けを防ぎ...
-
【VBS】古い日付のフォルダを削...
-
多量のファイルをフォルダに自...
-
VBScriptでのフォルダ指定ダイ...
-
VBA 最新のフォルダ取得
-
META-INFフォルダの置き場所に...
-
excelマクロ 冒頭3文字が一致す...
-
C ファイル出力で、フォルダが...
-
PSPICE 9.1 STUDENT VERSION ...
-
エクセル マクロで指定フォル...
-
フォルダを自分ごと削除
-
会社のネットワーク上のファイ...
-
ExcelのVBAでフォルダ指定がで...
-
VB.NETでツリービューにフォル...
-
フォルダを開いて、閉じるのプ...
-
フォルダにリンクを貼りたい
-
ディレクトリ名変更してコピー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
VBプロジェクトでのフォルダ構...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
パス名に2バイト文字(マルチバ...
-
Access VBA で フォルダ権限...
-
カレントフォルダって?
-
VBA フォルダ名に特定の文字を...
-
ExcelVBAでフォルダへのハイパ...
-
C ファイル出力で、フォルダが...
-
excelマクロ 冒頭3文字が一致す...
-
保存先のフォルダ名を指定した...
-
マクロVBAのフォルダ階層別で検...
-
Excelで指定したフォルダに保存...
-
ディレクトリ名変更してコピー...
-
vbsで選択ダイアログを表示した...
おすすめ情報