• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel vbaで助けてください)

VBAでExcelファイルをコピーして保存する方法

このQ&Aのポイント
  • Excel VBAを使用して、ファイルシートをすべて選択し、名前をつけて保存する方法について教えてください。
  • 保存されるファイルのグラフの元データが、コピー元ではなくコピー先になってしまう問題について、修正方法を教えてください。
  • ThisWorkbook.Worksheets.Copyを使用してファイルをコピーし、SaveAsメソッドを使用して名前をつけて保存します。その際、保存先のファイルのグラフの元データをコピー元ではなくコピー先にする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.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 ' '  ―――――――――――――――――――――――――――

puyopa
質問者

お礼

おぉー、これは助かります。大変興味深いです。 いろんなパターンをご提示いただけたので、いろんなパターンの勉強にもなりました。 とても、親切なお気遣いに感謝いたします。 ありがとうございました。

関連するQ&A