• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vba 特定の複数シートを別ファイルで保存。)

VBAで特定のシートを別ファイルで保存する方法

このQ&Aのポイント
  • VBAを使用して、指定のシートを別のファイルに保存する方法について質問があります。
  • 質問者は、ブック内にAとBの2つのシートがあり、シートAの情報が新しく作成されるシートCにコピーされ、シートCとシートBの2つのシートが別のファイルとして保存されるようにしたいと考えています。
  • 現在は、シートCのみを別ファイルで保存することができており、シートBが追加できないという問題に直面しています。

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

  • ベストアンサー
回答No.1

何をされたいのかちょっとよく分からないので(^^;、 余計混乱してしまうかもしれませんが、以下の視点を持つと、理解が進むと思います。 ・Setでいちいちオブジェクトに代入しなくてもコピペ(というか値を書き写す)できます。 ・通常のマウス操作であるコピーしてペーストするというのを忘れて下さい。 ■セルのコピー 左辺の値を右辺にすると書きます。 Range("○○").value = Range("●●").value (今アクティブなシートの)セル○○の値をセル●●の値にします。 シートを指定する場合はRangeの前にSheets("●●").のように。 ブックを指定する場合はSheetsの前にWorkbooks("●●").のように書きます。 ■シートのコピー これはそういう命令です。 Sheets("○○").copy のあとにBeforeかAfterと書いて、 どのシートの前(後ろ)にコピーするか指定します。 ■参考 Sub sheet_copy1() Sheets("○○").copy After:=Sheets("○○") End Sub ↑シート名○○を、シート名○○の後ろにコピーし名前は自動付加します。 Sub sheet_copy2()   Sheets("Sheet1").Range("A1").Value = Sheets("Sheet2").Range("A1").Value End Sub ↑シート名Sheet2のA1セルの値を、シート名Sheet1のA1セルにコピペします。 Sub sheet_copy3() With Workbooks.Open("1.xlsm") Workbooks("2.xlsm").Sheets("sheet1").Copy after:=.Sheets("sheet1") End With End Sub ↑ブック名2.xlsmシート名Sheet1を、ブック名1.xlsmシート名Sheet1の後ろにコピーします。  WithがSetの役割をしています。 ・Activateする、Setして代入する、と書かれている行はほぼ全て不要です。 ・Activeなシートをどうこうする というのもワケがわからなくなるので、 直接ブック名やシート名を指定するとうまく動かせる気がします。

pen123
質問者

お礼

細かくご説明いただき有難うございました。 非常に勉強になりました。 最終的に目的の動作を構築することができました。ありがとうございます。

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

Set CopyWorkSheet1 = Worksheets("シートA") CopyWorkSheet1.Copy しーとA を変数に代入。 その変数をこぴーする。=新しいシーとができる。 SET。。。で何か新しいシートができるわけではありません。

pen123
質問者

お礼

勉強になりました。ありがとうございます。

関連するQ&A