- ベストアンサー
VBAでExcelファイルをコピーして保存する方法
- Excel VBAを使用して、ファイルシートをすべて選択し、名前をつけて保存する方法について教えてください。
- 保存されるファイルのグラフの元データが、コピー元ではなくコピー先になってしまう問題について、修正方法を教えてください。
- ThisWorkbook.Worksheets.Copyを使用してファイルをコピーし、SaveAsメソッドを使用して名前をつけて保存します。その際、保存先のファイルのグラフの元データをコピー元ではなくコピー先にする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 こんな感じ? ' ' ――――――――――――――――――――――――――― SaveFilePath = Application.GetSaveAsFilename(mypath, "ExcelFile(*.xls),*.xls") If SaveFilePath <> "False" Then ActiveWorkbook.SaveCopyAs Filename:=SaveFilePath '(1/2択)アクティブなブック ' ThisWorkbook.SaveCopyAs Filename:=SaveFilePath '(2/2択)自ブック Workbooks.Open Filename:=SaveFilePath ' 開く場合 Else End If ' ' ――――――――――――――――――――――――――― 或いは、 元のブックのシート数が幾つであっても 左からふたつのシートだけをコピーする場合は以下。 ' ' ――――――――――――――――――――――――――― Dim i As Long SaveFilePath = Application.GetSaveAsFilename(mypath, "ExcelFile(*.xls),*.xls") If SaveFilePath <> "False" Then ActiveWorkbook.SaveCopyAs Filename:=SaveFilePath '(1/2択)アクティブなブック ' ThisWorkbook.SaveCopyAs Filename:=SaveFilePath '(2/2択)自ブック With Workbooks.Open(Filename:=SaveFilePath) Application.DisplayAlerts = False For i = .Sheets.Count To 3 Step -1 .Sheets(i).Delete Next i Application.DisplayAlerts = True .Close True '(1/2択)閉じる ' .Save '(2/2択)閉じずに上書きのみ End With Else End If ' ' ―――――――――――――――――――――――――――
お礼
おぉー、これは助かります。大変興味深いです。 いろんなパターンをご提示いただけたので、いろんなパターンの勉強にもなりました。 とても、親切なお気遣いに感謝いたします。 ありがとうございました。