マクロの初心者ですが、どうか教えてください。
テンプレートブックを名前を付けて保存するマクロで
苦戦しております。
・ダイアログを必ず開く
・その時の保存先はz:\あああ
・ブック名はアクティブシートの任意のセルA1
---------------------------------------------
Application.Dialogs(xlDialogSaveAs).Show _
Arg1:=Range("A1").Value
ここまではたどり着けたのですが、ダイアログが
当初のテンプレートブックの保存場所が開いてしまいます。
どうぞよろしくお願いいたします。
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で、同じ結果になるかと思います。
何度もつきあわせてごめんなさい。よろしくお願いします。
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.4
- 回答日時:
>ただ、名前付け保存ダイアログを開いて、「キャンセル」
ボタンを押すと、「False」が表示されます。
これを出さなくするには、何を付け足せばいいでしょうか?
キャンセルを押したときの、MsgBoxの動作を言っているのかな?
元々コレは確認用なので、動作が確認できれば不要な物です
コメントにしてしまえばOKでしょう
そのまま見たいなら、If文の中に入れればいいと思うけど、それすら判らないのかな…?
>>データシートをBefore After を指定せずにコピー
>データシートだけの乗った新規Bookを今回のコードを使って保存
これはどうやるのでしょうか?
Copyのヘルプをご覧下さい
シートに対してこのメソッドを行った場合、新規Bookが作成され、そこにコピーしたシートが一つ入っている状態になります
コレを保存すれば、マクロが乗っていないファイルの出来上がり♪
手動でシートのタブ右クリ→移動またはコピー→新しいブック
とやる動作をマクロ的にやったのと変わらないので、マクロの記憶を取ってみればすぐわかると思います
シートコピー~名前を付けて保存 までを、マクロの記憶を取りながらやってみて下さい
どこに今回のヤツを実装するかは、相当アレじゃない限りすぐわかると思います
この回答への補足
お返事、遅くなってすみません。
一個前にいただいた回答に「出来ました!」と書きましたが
勘違いでした。うまくいっておりませんでした。
ダイアログは指定したフォルダ z:\あああ で開くのですが、
ダイアログのファイル名記入欄が空白で表示されます。また、
セルA1にz:\あああ\と記入されてしまいます。
ダメな私でもわかるようにご説明いただければ幸甚でございます。
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を今回のコードを使って保存
これはどうやるのでしょうか?素人なのですみません。
もう少し詳細をお知らせいただけませんでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBA セルの値をファイル名にして保存するには
Visual Basic(VBA)
-
Excelでセル内の文字をファイル名にする方法と、下のSheet1タブを2列にする方法は?
Excel(エクセル)
-
excelで複数セル値を組合わせてファイル名にする方法
Excel(エクセル)
-
-
4
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
5
エクセルでセル値をファイル名にして保存しようと思っています。
Visual Basic(VBA)
-
6
SaveAsの保存先について
Visual Basic(VBA)
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
9
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
10
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
11
Excelで指定したフォルダに保存するマクロ
Excel(エクセル)
-
12
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
13
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
すでに開いているブックのマク...
-
VBA、Excelのworkbook.open に...
-
エクセルVBA Workbook変数に変...
-
【ExcelVBA】指定の書式で、マ...
-
エクセルのマクロについて教え...
-
【Excel VBA】ブックを複数開い...
-
[Excel VBA] フォルダ内の複数...
-
フォルダ内の全ブックのシート...
-
EXCEL VBA起動時の処理
-
VB2010でExcelの行をコピーして...
-
VBA セル入力された日付データ...
-
excelマクロ、任意セルの値で名...
-
EXCELマクロでxlsとxlsxを開く方法
-
エクセル アプリケーションの...
-
personal.xlsの削除方法
-
Excelの一括印刷で通し番号をつ...
-
フォルダ内の全てのBookに同じ...
-
いつも大変お世話になっており...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全てのBookに同じ...
-
EXCELマクロでxlsとxlsxを開く方法
-
excelマクロ、任意セルの値で名...
-
[Excel VBA] フォルダ内の複数...
-
VBA、Excelのworkbook.open に...
-
すでに開いているブックのマク...
-
EXCELマクロで上書きメッ...
-
VBA セル入力された日付データ...
-
EXCEL VBA起動時の処理
-
エクセルのマクロについて教え...
-
他のBookのユーザー定義関数を使う
-
Excel VBAを後ろで動かす方法
-
Excelの一括印刷で通し番号をつ...
おすすめ情報