[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで特定のシートだけを別ファイルで保存する方法』(あかり)
VBAで特定のシートだけを別ファイルで保存する方法を教えていただませんか。。。、
・別ファイルのデータは関数ではなく値貼り付けで行いたい。
・保存の際、名前を変更したい。
なお、VBA初心者のため、コードを教えてもらえるととても助かります><
< 使用 Excel:Excel2007、使用 OS:Windows7 >
Sub 特定のシートだけを別ファイルで保存する()
Dim sheetNames As Variant Dim shn As Variant Dim WB As Workbook
'特定のシート sheetNames = Array("Sheet2", "Sheet3")
'新規ブックの準備 Set WB = Workbooks.Add
For Each shn In sheetNames '新規ブックにコピー ThisWorkbook.Worksheets(shn).Copy After:=WB.Worksheets(WB.Worksheets.Count) '関数を値に変換 WB.Worksheets(shn).UsedRange.Value = WB.Worksheets(shn).UsedRange.Value Next
Application.DisplayAlerts = False WB.Worksheets(1).Delete Application.DisplayAlerts = True
'同じフォルダにnewfile.xlsxで保存 WB.SaveAs ThisWorkbook.Path & "\newfile.xlsx", XlFileFormat.xlOpenXMLWorkbook WB.Close False
End Sub
(名無し) 2018/10/02(火) 16:53
返信ありがとうございます!
Q1.特定のシートの選び方は?
⇒ データをまとめたサマリーシートになります。
シート名の固定も可能です。
Q2.保存するファイルのパスの決め方は?
⇒ ローカルに保存したいです。
(あかり) 2018/10/02(火) 17:15
⇒ データをまとめたサマリーシートになります。
シート名はこの部分を追加・編集・削除して下さい。例えば、Sheet4を追加するなら
sheetNames = Array("Sheet2", "Sheet3", "Sheet4")
⇒ ローカルに保存したいです。
保存パスとファイル名の決め方が知りたかったのですが・・・
固定で構わないのであれば、この部分を適当になおしてください。
WB.SaveAs ThisWorkbook.Path & "\newfile.xlsx", XlFileFormat.xlOpenXMLWorkbook
(名無し) 2018/10/02(火) 17:34
ありがとうございます!!!
試してみます!
(あかり) 2018/10/02(火) 18:05
(もこな2) 2018/10/02(火) 20:39
保存できました!!!!
また、ファイル名に関しては都度設定したいのですが、
その場合はどうなりますでしょうか???
もこなさん
ありがとうございます!
参考に確認してみます!
(あかり) 2018/10/03(水) 16:28
WB.SaveAs ThisWorkbook.Path & "\newfile.xlsx", XlFileFormat.xlOpenXMLWorkbook を Dim fn As String fn = InputBox("ファイル名を入力") If fn = "" Then MsgBox "キャンセルされました。" Else WB.SaveAs ThisWorkbook.Path & "\" & fn & ".xlsx", XlFileFormat.xlOpenXMLWorkbook End If という感じで如何でしょう。
(名無し) 2018/10/03(水) 17:41
WB.SaveAs ThisWorkbook.Path & "\newfile.xlsx", XlFileFormat.xlOpenXMLWorkbook WB.Close False
上記部分と置き換える感じですかね??
また、新しいファイルを作成した時に、マクロのボタン(フォームコントロール)を
シートから消すことってできますか???
いろいろ相談してすいません><
(あかり) 2018/10/03(水) 18:47
>マクロのボタン(フォームコントロール)をシートから消すことってできますか???
新しく保存したブックにボタンを残したくないってことですよね。
それを反映するとこうなります。
Sub 特定のシートだけを別ファイルで保存する() Dim sheetNames As Variant Dim shn As Variant Dim WB As Workbook Dim callShn As String Dim callShp As String
'マクロ呼び出し元情報の保持 callShn = ActiveSheet.Name callShp = Application.Caller
'特定のシート sheetNames = Array("Sheet2", "Sheet3")
'新規ブックの準備 Set WB = Workbooks.Add
'シートを複写 For Each shn In sheetNames '新規ブックにコピー ThisWorkbook.Worksheets(shn).Copy After:=WB.Worksheets(WB.Worksheets.Count) '関数を値に変換 WB.Worksheets(shn).UsedRange.Value = WB.Worksheets(shn).UsedRange.Value Next Application.DisplayAlerts = False WB.Worksheets(1).Delete Application.DisplayAlerts = True
'呼び出し元シェイプの削除 On Error Resume Next WB.Worksheets(callShn).Shapes(callShp).Delete On Error GoTo 0
'同じフォルダに任意の名前で保存 Dim fn As String fn = InputBox("ファイル名を入力") If fn = "" Then MsgBox "キャンセルされました。" Else WB.SaveAs ThisWorkbook.Path & "\" & fn & ".xlsx", XlFileFormat.xlOpenXMLWorkbook End If '閉じる WB.Close False End Sub
Resume Nextでエラーチェックをサボっているので、偉い人には叱られるかもしれませんが、この程度の処理ならこれで十分でしょう。
(名無し) 2018/10/04(木) 13:26
ありがとうございます!!!
早速試してみたとところ、VBAのボタン(フォームコントロール)が残ってしまいました。。。
こちらは標準モジュールで作成しております。
何か理由がありますでしょうか。。。
(あかり) 2018/10/04(木) 15:01
というか、消したいボタンというのは、マクロを呼び出したボタンだけですよね?
シート上に存在する全てのフォームコントロールを消したいという話なら
WB.Worksheets(callShn).Shapes(callShp).Delete の部分を Dim shp As Shape For Each shn In sheetNames For Each shp In WB.Worksheets(shn).Shapes If shp.Type = msoFormControl Then shp.Delete End If Next Next に変えることで消すことが出来ます。 (名無し) 2018/10/04(木) 15:15
できました!!!!!
本当にありがとうございます。助かりました!
(あかり) 2018/10/05(金) 15:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.