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

はじめて質問させて頂きます。

エクセル2013にて、100シートのものを、それぞれのシート名(B2でも構わない)で別ブックにコピーし、名前をつけて保存する作業をしています。

現在のVBAでは途中でエラーが起きてしまい、かつ出来ればブックは閉じたいとと思っています。


Sub sheetmove()
Dim i As Integer
For i = Worksheets.Count To 2 Step -1
Worksheets(i).Move
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" _
& ActiveSheet.Range("B2") & ".xls"
ThisWorkbook.Activate
Next i
End Sub

前任者の残したマクロでこれ以上触ってしまうと手に負えなくなると思います。
お詳しい方いらっしゃいましたらご教授いただけましたら幸いです。。

どうぞよろしくお願い致します。

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

  • つらい・・・

    早々に有難う御座います!
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" _
    & ActiveSheet.Range("B2") & ".xls"
    の場所でとまっており、確認してみたらファイル名がかぶってしまうためにエラーを起こしておりました!
    修正してもう一度実行したらPCのメモリ不足で出来ませんでした。。。

    質問が変わってしまって申し訳ないのですが、シートループしない方法をご教授いただけますでしょうか。。。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/11/27 13:25
  • つらい・・・

    早々に有難う御座います!デバック教えてくださって有難う御座います!
    確認したら、
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" _
    & ActiveSheet.Range("B2") & ".xls"
    の場所でとまっており、確認してみたらファイル名がかぶってしまうためにエラーを起こしておりました!
    ですが、修正してもう一度実行したらPCのメモリ不足で出来ませんでした。。。

    質問が変わってしまって申し訳ないのですが、シートループしない方法をご教授いただけますでしょうか。。。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/11/27 13:25

A 回答 (4件)

シートループさせないのであれば、VBA内の『For i = Worksheets.Count To 2 Step -1』『Next i』を外せばよいのですが


変数指定している部分『Worksheets(i).Move』も関係するため、VBAの構文自体を大幅に変更する必要性があります。

質問者gどのように利用したいのかを具体的にお伝えいただけませんか
よろしくお願いします。
    • good
    • 0

恐らくメモリ不足で出来なくなった原因としては


Moveされたファイルを閉じるコードが入ってないためエラーを起こしていると思います。

生成されたファイルを閉じるコードを付けてみましたので
参考までに

Sub sheetmove()
Dim i As Integer
For i = Worksheets.Count To 2 Step -1
Worksheets(i).Move
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" _
& ActiveSheet.Range("B2") & ".xls"
Workbooks(ActiveSheet.Range("B2") & ".xls").Close  ’この欄を追加してます。 『Move』で作成したファイルを閉じるコード
ThisWorkbook.Activate
Next i
End Sub
    • good
    • 0
この回答へのお礼

本当にありがとうございます!なぜか閉じるときに途中でエラーがおきるものの、(大体20個目くらい)
継続させると動いたので、ちゃんと最後までやり遂げることが出来ました!

お礼日時:2015/11/27 14:22

VBAの内容を判る範囲で訳してみましたが


エラーが出た際に『デバッグ』を選択すると
どこかしら色がついているかと思います。

どの部分か判れば対処出来そうですが…
「アクティブシート名で新しいブックにコピー」の回答画像2
この回答への補足あり
    • good
    • 0

エラーの部分が不明ですので、回答ができない状態です。


どのような状況でエラーが発生しておりますか?
この回答への補足あり
    • good
    • 0

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