重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

シートの順番を変えてファイル化したい


ブックの中にシートが3つあります。
シート1は使用せず、シート3・シート2の順番でコピーしてファイルにして出力するコードを作りました。
しかし出来たファイルの順番がシート2・シート3になってしまうのです、改善策を教えていただけませんでしょうか?
もう一つありまして、ファイル化する際にシート3の名前を変えたいのです。
現在の名前は テスト(1)
変更後の名前は テスト
にしたいです。

分かりにくい説明で申し訳ありません、宜しくお願い致します。


Sub ファイル()

Sheets(Array(3, 2)).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:¥〇〇〇¥〇〇〇¥Desktop¥" & "×××" & Range("A1") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End Sub

A 回答 (1件)

このコードの場合、素人考えでは、


Copy前に操作をしてActiveWorkbook.Close後に戻す方法が考えられます。
Sheets("Sheet2").Move After:=Worksheets(Worksheets.Count) ’Sheet2を最後にしてCopy

ActiveWorkbook.Close
Sheets("Sheet3").Move After:=Worksheets(Worksheets.Count) 'Sheet3を最後に戻す。
但し、 Range("A1")は、明示的にシートを指定してください。

また、名前に関しては少々難があります。テスト(1)と言う事は、すでにテストが存在している可能性がありますね
なので、テストが存在しているか各シートを確認して存在していれば、任意名を付け、テスト(1)にテストを付けCopy
ActiveWorkbook.Close後に
任意で付けた名前を元に戻す
 このコードの場合の力技だとこうなるかな。

他の方法で(Sheets(Array(3, 2)).Copy・・・ActiveWorkbook.SaveAs でなく

新規ブックにシートを挿入する形のプロセスなら、順番、名前を変えて、インデックス1の(要らない)シートを削除し保存なども考えられますね。
    • good
    • 0
この回答へのお礼

ありがとうございました❗なんとか理想に近いものができました。

お礼日時:2020/03/07 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!