プロが教える店舗&オフィスのセキュリティ対策術

VBA シートをコピーして保存


VBA 作業しているブックのデータが入っている複数または一つのシートをコピーをして、作業しているブックが保存されているフォルダにシート名をブックにして保存する方法を教えてください。

質問者からの補足コメント

  • 回答ありがとうございます。
    そうです。三つシートがあれば全て処理します。ただし、三つ全てにデータが入ってるとは限らないので、for nextでcells(1,1)をみに行って、あったらcopyして複製し、と行った流れです。
    よろしくお願いします。

      補足日時:2017/02/21 01:17
  • 常に最新のものが、保存されていれば問題ないです

      補足日時:2017/02/21 05:44
  • シート名はそれぞればらばらです。仮にA,B,Cとしています。全てのシート共通でデータが存在していれば、A1にデータがあるので、なければそのシートはふくせいしません。

      補足日時:2017/02/21 06:22
  • うまくいきませんでした。引き続き、回答おまちしております。

      補足日時:2017/02/22 21:41

A 回答 (5件)

補足要求です。


VBA作業しているブック内の全てのシートを処理するのですか。
ブック内に3つのシートがあれば、3つのブックを作成するということ良いですか。
(1つのブック内1つのシートであり、シート名とブック名は同じになる。シート名がAAAならブック名はAAA.xlsxとなる)
    • good
    • 0

保存するさいのブック名はどうするのでしょうか?同じ名前ですと上書きされて最後の物しか残りません。

    • good
    • 0

ところでシート名はなんでしょうか?


存在するシートでA1セルに何か書かれているもの全てという事でしょうか?
    • good
    • 0

こんなものはいかがでしょうか?


------------------------------------------------------------------
Sub シートをコピーして保存()
Dim シート番号 As Long
Dim フルパス名 As String
For シート番号 = 1 To Sheets.Count
If Sheets(シート番号).Cells(1, 1).Value <> "" Then
フルパス名 = ThisWorkbook.Path & "\" & Sheets(シート番号).Name & ".xlsx"
If Dir(フルパス名) <> "" Then Kill (フルパス名)
Sheets(シート番号).Copy
ActiveWorkbook.SaveAs Filename:=フルパス名, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
Next
End Sub
------------------------------------------------------------------
    • good
    • 0

「うまくいきませんでした。

」とは、どんな風にうまくいかなかったかを教えていただけないと対応できません。(こちらで受け取った形ではチャント動いているので…)
    • good
    • 0

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