- ベストアンサー
VBAでブック内のワークシートを名前をつけて保存
エクセルVBAで作業中のブックの一部のワークシート(2枚)を名前をつけて保存する方法を教えてください。 (例) 《ブックA》 sheet1 sheet2 sheet3 10/5 10個 10,000円 4個 25,000円 東京 25個 18,500円 6個 42,000円 というブックから『10/5 東京』というブックでsheet2,sheet3の内容を 保存したいのですが・・・ VBAは勉強し始めでほとんどわからないので教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 追加質問について、回答します。 A1セルが空白の時はC1セルとH1セルの値をくっつけて名前とします。 もし、C1,D1,E1,~H1セル全部くっつけたいということでしたら fn2 = .Range("C1").Value & .Range("H1").Valueの部分に&で書き足してください。 なお、さきほどの回答にあやまり(& "\" が抜けていた)がありましたので修正します。 Sub TEST02() Dim pt As String, fn As String, fn2 As String pt = ActiveWorkbook.Path With Sheets("Sheet1") fn = .Range("A1").Value fn2 = .Range("C1").Value & .Range("H1").Value End With Sheets(Array("Sheet2", "Sheet3")).Copy ActiveWorkbook.SaveAs Filename:=pt & "\" & IIf(fn = "", fn2, fn) ActiveWorkbook.Close End Sub
その他の回答 (2)
- moooon
- ベストアンサー率26% (26/98)
こう次々と初期の質問から飛躍するのはどんなもんでしょうねえ。本来は、別の質問としてアップするべきと思いますが・・・。 横からですが、一応おこたえします。 No1-2さんのをほとんど丸写しになってしまいますが、そのほうがわかりやすいでしょう。merlionXXさん、すみません。 Sub HOZONN() Dim pt As String, fn As String, fn2 As String Dim Rtn pt = ActiveWorkbook.Path With Sheets("Sheet1") fn = .Range("A1").Value fn2 = .Range("C1").Value & .Range("H1").Value End With Sheets(Array("Sheet2", "Sheet3")).Copy Rtn = Application.Dialogs(xlDialogSaveAs) _ .Show(ARG1:=IIf(fn = "", fn2, fn) & ".xls", ARG2:=1) If Rtn = False Then Exit Sub ActiveWorkbook.Close End Sub
お礼
スミマセン。 次回からはそうさせていただきます。
- merlionXX
- ベストアンサー率48% (1930/4007)
10/5 東京ですが、/ はブックやシートの名前に使えないので 10.5 東京 としました。 Sub TEST01() Dim pt As String pt = ActiveWorkbook.Path Sheets(Array("Sheet2", "Sheet3")).Copy ActiveWorkbook.SaveAs Filename:=pt & "10.5 東京.xls" ActiveWorkbook.Close End Sub
補足
早速ありがとうございます。 質問の仕方が悪かったので申し訳ありませんが、あと少し。 シート名はsheet1のA1のセルの値をつけたい場合と、 A1のセルが空欄でC1からH1のセルの値を結合してつけたい場合は どのようにすればよろしいですか? 1から10まで聞いてしまいスミマセン。
お礼
ありがとうございます。 次々と質問してスミマセン。
補足
補足の質問にも丁寧に答えていただきありがとうございます。 思っていたとおりのができました。 あと、もう1つ質問です。 保存先を指定するダイアログボックスを表示させたいのですが、 (保存先を指定したい)どうすればよいですか?