希望する事は
ファイルを保存するフォルダを指定し、
ファイル名(インプットボックスをつかって
変数として入力させたもの)をつけて保存したい。
フォルダは事前に作成してあるが
保存したい場所はそのときによってまちまちなので
保存するたびにフォルダを指定したい。
具体的には
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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
SaveAsの保存先について
Visual Basic(VBA)
-
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
-
4
excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存
Visual Basic(VBA)
-
5
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
6
VBAでファイル名を指定して保存するとき
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
VBAでSaveAs使用し、指定していないのにデスクトップに保存される理由
PowerPoint(パワーポイント)
-
9
VBA 新規ファイルを元ファイルと同じ場所に保存する方法
Excel(エクセル)
-
10
ファイル保存時のダイアログ表示フォルダを変更したい
Visual Basic(VBA)
-
11
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
12
【マクロ】名前を保存する際に、同じファイルがあった場合に、メッセージを表示
Excel(エクセル)
-
13
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
14
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
15
InputBoxに入力した言葉をシート名にしたい!
Excel(エクセル)
-
16
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
17
Excel VBA ステップインが途中で通常実行になってしまう
Excel(エクセル)
-
18
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
19
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
20
エクセルをPDFにし複数のユーザーが各自の指定のデスクトップフォルダに保存するVBAを教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
デスクトップの画像をhtmlに表...
-
excelマクロ 冒頭3文字が一致す...
-
会社のネットワーク上のファイ...
-
クラウドにあるフォルダを共有...
-
エクセル VBA Filename:=Left(T...
-
API関数(DLL)の呼び出しにお...
-
Access VBA で フォルダ権限...
-
【マクロ】ファイル名の日付に...
-
フォルダを開いて、閉じるのプ...
-
【ExcelVBA】一覧表の記載に従...
-
保存先のフォルダ名を指定した...
-
Excel VBA で フォルダ名の一部...
-
VBA 最新のフォルダ取得
-
C ファイル出力で、フォルダが...
-
C#でフォルダをロックする方法
-
Let’s Encryptでwebroot設定な...
-
Windows10でコマンドプロンプト...
-
複数のテキストファイルの結合方法
-
バッチファイルで指定フォルダ...
-
Excel VBA 同じ名前のフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
Excelのハイパーリンクについて...
-
デスクトップの画像をhtmlに表...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
excelマクロ 冒頭3文字が一致す...
-
会社のネットワーク上のファイ...
-
フォルダ内のPDFファイル名を変...
-
Access VBA で フォルダ権限...
-
VBA フォルダ名に特定の文字を...
-
【マクロ】ファイル名の日付に...
-
フォルダを開いて、閉じるのプ...
-
カレントフォルダって?
-
パス名に2バイト文字(マルチバ...
-
保存先のフォルダ名を指定した...
-
Excelで指定したフォルダに保存...
-
Debug フォルダは消していいの?
-
ExcelのVBAでフォルダ指定がで...
-
C ファイル出力で、フォルダが...
-
vbsで選択ダイアログを表示した...
おすすめ情報