マクロの初心者ですが、どうか教えてください。
テンプレートブックを名前を付けて保存するマクロで
苦戦しております。
・ダイアログを必ず開く
・その時の保存先はz:\あああ
・ブック名はアクティブシートの任意のセルA1
---------------------------------------------
Application.Dialogs(xlDialogSaveAs).Show _
Arg1:=Range("A1").Value
ここまではたどり着けたのですが、ダイアログが
当初のテンプレートブックの保存場所が開いてしまいます。
どうぞよろしくお願いいたします。
No.3
- 回答日時:
示されたコードのデフォルトフォルダが上手くセットできないのは、通常の名前を付けて保存という動作は、保存された事のあるファイルは、その保存先がデフォルトになる
と言う、エクセルの仕様です
試しに、『保存先フォルダの違うエクセルファイル』を複数開いて、名前を付けて保存(保存はしなくて良い)を見てもらえば分かると思う
(そのファイルごとのデフォルトフォルダね)
あとは、新規Bookを名前を付けて保存するときは、マイドキュメントがデフォルトだけど、一旦別なフォルダに保存すると、次からはそこがデフォルトセットされることからも、分かるね
代わりにGetSaveAsFilenameを使っては如何でしょ?
これは、『ユーザが「名前を付けて保存」のような操作』を行う要領で、フルパスのファイル名を設定してもらう為のダイアログを表示します
実際には保存されませんので、受け取ったフルパスで、別途マクロ的に保存(SaveAsメソッド)する必要がありますが、通常の名前を付けて保存と違って、デフォルトの表示フォルダを任意に指定できます
コードだとこんなです
Dim MySavePath As String
Range("A1").Value = "z:\あああ"'ホントは要らないだろうけどMsgBoxとの対比用
MySavePath = Application.GetSaveAsFilename(Range("A1").Value, "Excel ファイル (*.xls), *.xls")
MsgBox MySavePath
If MySavePath <> False Then
ThisWorkbook.SaveAs MySavePath 'テンプレBookが違うならそのBookを指定
End If
(XP/Excel2003)
因みにファイル名を指定しないときは"\"で閉めるとフォルダだけ指定できる
また、指定したフォルダが存在しないときはマイドキュメントがデフォルトセットされる
ネットだとこの辺かな~?
http://www.big.or.jp/~seto/vbaref/vbaref14.htm
あと、余計なお世話かも知れないけど、この仕様だと「マクロの乗ったファイルがどんどん増える」よ?
データだけを保存するように、
データシートをBefore After を指定せずにコピー
データシートだけの乗った新規Bookを今回のコードを使って保存
ってした方が良いかもね
上手く行かなかったら補足よろしく!
この回答への補足
ありがとうございます。うまく行きました!!
ただ、名前付け保存ダイアログを開いて、「キャンセル」
ボタンを押すと、「False」が表示されます。
これを出さなくするには、何を付け足せばいいでしょうか?
>この仕様だと「マクロの乗ったファイルがどんどん増える」よ?
今、会社のパソコン5台それぞれの「PERSONAL.XLS」にVBAを
書いて使おうとしてますが、
>データシートをBefore After を指定せずにコピー
>データシートだけの乗った新規Bookを今回のコードを使って保存
これはどうやるのでしょうか?素人なのですみません。
もう少し詳細をお知らせいただけませんでしょうか。。
No.4
- 回答日時:
>ただ、名前付け保存ダイアログを開いて、「キャンセル」
ボタンを押すと、「False」が表示されます。
これを出さなくするには、何を付け足せばいいでしょうか?
キャンセルを押したときの、MsgBoxの動作を言っているのかな?
元々コレは確認用なので、動作が確認できれば不要な物です
コメントにしてしまえばOKでしょう
そのまま見たいなら、If文の中に入れればいいと思うけど、それすら判らないのかな…?
>>データシートをBefore After を指定せずにコピー
>データシートだけの乗った新規Bookを今回のコードを使って保存
これはどうやるのでしょうか?
Copyのヘルプをご覧下さい
シートに対してこのメソッドを行った場合、新規Bookが作成され、そこにコピーしたシートが一つ入っている状態になります
コレを保存すれば、マクロが乗っていないファイルの出来上がり♪
手動でシートのタブ右クリ→移動またはコピー→新しいブック
とやる動作をマクロ的にやったのと変わらないので、マクロの記憶を取ってみればすぐわかると思います
シートコピー~名前を付けて保存 までを、マクロの記憶を取りながらやってみて下さい
どこに今回のヤツを実装するかは、相当アレじゃない限りすぐわかると思います
この回答への補足
お返事、遅くなってすみません。
一個前にいただいた回答に「出来ました!」と書きましたが
勘違いでした。うまくいっておりませんでした。
ダイアログは指定したフォルダ z:\あああ で開くのですが、
ダイアログのファイル名記入欄が空白で表示されます。また、
セルA1にz:\あああ\と記入されてしまいます。
ダメな私でもわかるようにご説明いただければ幸甚でございます。
No.5
- 回答日時:
まず一個訂正です
If MySavePath <> False Then ’×
If MySavePath <> "False" Then’○
キャンセルを選択した際に返るのは文字の"False"
Dim MySavePath As String としたので当然と言えば当然ですが、うっかり写しミスです
すいません
さて、補足の件です
>ダイアログは指定したフォルダ z:\あああ で開くのですが、ダイアログのファイル名記入欄が空白
また
>セルA1にz:\あああ\と記入されてしまいます
との事なので
ここ
Range("A1").Value = "z:\あああ"'ホントは…
↓こうなってませんか?
Range("A1").Value = "z:\あああ\" 最後『\』
あるいは、セルA1の値がすでに "z:\あああ\" だとか?
No.3に書いた通り、『\』で閉めると、指定はフォルダ扱いとなるので、ファイル名は指定されていない事になります
ダイアログにデフォルトセットするフォルダが『z:\あああ』なら、その先にファイル名を記入する必要があります
(z:\あああ に あああ.xls として保存するのをデフォルトセットするなら "z:\あああ\あああ")
フォルダ名とファイル名がわからなくなるなら、拡張子(.xls)まで、記入してしまっても問題ありません
こんな具合
Range("A1").Value = "z:\あああ\あああ.xls"
ダメなってそんな^^;
たぶん、ちょっと勘違いしてるだけ("\"関連)だと思いますが、まぁ後に見る人の為って事でクドさは目をつぶって下さい
この回答への補足
すみません。うまく行きませんでした。
もう一度私のやりたいことを整理させていただきます。
・セルA1の値をファイル名にして
(A1が いいい ならば、ファイル名は いいい.xls と自動取得)
・任意の場所に (z:\あああ)
・ダイアログで確認しながら保存をしたい
(z:\あああ の中にさらに細かく分かれたフォルダが
あるのでそこを目視確認しながら)
こういうことなのですが、お互い意図してるところは
同じでしょうか?
----------------------------------------
Range("Z1").Value = "z:\■■受注書"
'Range("Z1").Value = "z:\■■受注書"
----------------------------------------
この2パターンで実験したのですが、
上段の場合: セルA1に z:\■■受注書 と記載されてしまう。
下段の場合: ファイル名はセルA1の いいい.xls でダイアログに
反映されるのですが、今度はフォルダ z:\■■受注書 が
開かず、カレントフォルダが開く。
こんな感じになっております。何度もすみませんが
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
ふぅむ・・・
なんか説明がマズイようで、申し訳ない
まず、保存の部分は値さえ取れればOKとしまして、ダイアログにデフォルトセットされる部分についてのみです
デフォルトのフォルダを
"z:\■■受注書"
とします(セルZ1にセットしてある)
デフォルトファイル名を
"いいい.xls"
とします(セルA1にセットしてある/ "いいい"のみでもOK)
MySavePath = Application.GetSaveAsFilename(Range("Z1").Value & "\" & Range("A1").Value, "Excel ファイル (*.xls), *.xls")
GetSaveAsFilenameに入れる値は、最初 "z:\■■受注書\いいい.xls" と言う事になります
本来保存したいところではないので、勘違いしますが、あくまでダイアログのデフォルトにセットする引数なので、問題ありません
上手く行かないようでしたら
これを試して下さい
MySavePath = Application.GetSaveAsFilename("z:\■■受注書\いいい", "Excel ファイル (*.xls), *.xls")
どこを Range("A1").Value と置き換えるかは・・・
まぁ見たままです
文字の連結には『&』を使います
Range("A1").Value = hogehoge としたのは、値がセットされていない事を考慮してです
デフォルトセットする値を取得するセルに、すでにフォルダ名やファイル名がセットされているのであれば、不要な部分です
コメントにして下さい
これで上手く行くと良いですがねぇ
この回答への補足
やりました!うまく出来ました!
わかりやすいご説明ありがとうございます。
今後これを見る人のためにもホント最後の質問なのですが、
セルZ1に z:\■■受注書 と記入しないでも、マクロコード内の記述で
ダイアログを z:\■■受注書 フォルダで開くようには出来ますか?
これが出来れば、そのマクロ+今回のApplication.GetSaveAsFilenameで、同じ結果になるかと思います。
何度もつきあわせてごめんなさい。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel VBA セルの値をファイル名にして保存するには
Visual Basic(VBA)
-
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
excelで複数セル値を組合わせてファイル名にする方法
Excel(エクセル)
-
-
4
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
5
エクセルでセル値をファイル名にして保存しようと思っています。
Visual Basic(VBA)
-
6
VBAでPDFを保存する
Excel(エクセル)
-
7
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
8
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
9
Excelでセル内の文字をファイル名にする方法と、下のSheet1タブを2列にする方法は?
Excel(エクセル)
-
10
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
13
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
VB2010でExcelの行をコピーして...
-
すでに開いているブックのマク...
-
エクセルVBA Workbook変数に変...
-
Excel マクロでファイル名を変...
-
エクセルVBAでブックを開くと処...
-
【Excel VBA】ブックを複数開い...
-
personal.xlsの削除方法
-
VBA セル入力された日付データ...
-
[Excel VBA] フォルダ内の複数...
-
エクセル アプリケーションの...
-
Excelの一括印刷で通し番号をつ...
-
エクセルにおいて、行ごとに別...
-
フォルダ内の全ブックのシート...
-
Excel VBAを後ろで動かす方法
-
excelマクロ、任意セルの値で名...
-
excelでハイパーリンク 別ブッ...
-
【VBA】他のExcelを起動し、呼...
-
【ExcelVBA】指定の書式で、マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
VB2010でExcelの行をコピーして...
-
エクセルVBA Workbook変数に変...
-
【ExcelVBA】指定の書式で、マ...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全てのBookに同じ...
-
すでに開いているブックのマク...
-
EXCELマクロでxlsとxlsxを開く方法
-
VBA セル入力された日付データ...
-
VBA、Excelのworkbook.open に...
-
personal.xlsの削除方法
-
excelマクロ、任意セルの値で名...
-
コマンドボタンでマクロを起動...
-
エクセルVBAでブックを開くと処...
-
VBAでEXCELのワークシートを削...
-
EXCELマクロで上書きメッ...
-
[Excel VBA] フォルダ内の複数...
-
EXCEL VBA起動時の処理
おすすめ情報