• ベストアンサー

選択されているシートを移動したい

一定ではない複数のシートがあり、 そのうちの右端の1枚は必ず「ファイル集計」というシートになっています。 この、ファイル集計以外のシートを 新しいブックを作って移動させるにはどうしたらいいでしょうか。 あくまでもファイル集計は元のブックに残し それ以外のシートを移動させたいのです。 Sub 入力データを保存して閉じる() Dim ファイルナンバー As String Dim 保存指定フォルダ2 As String Dim mySht As Worksheet With Application .DisplayAlerts = False For Each mySht In Worksheets If mySht.Name <> Sheets("ファイル集計").Name Then mySht.Select False Next .DisplayAlerts = False End With ↑このようなかたちで、選択するところまでは出来たのですが それを新しいブックに移動させるのがうまくいきません。 ChDir "C:\計算\" & 保存指定フォルダ Activesheets.Move ActiveWorkbook.SaveAs Filename:=ファイルナンバー & "D.xls" Application.DisplayAlerts = False   ActiveWorkbook.Close end sub とすると、選択されているシートのうち1枚しか移動できないのです。 教えてください。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.2

質問文では  Activesheets.Move となっていますが、もし、  Activesheet.Move としているのであれば、 "Activesheet"プロパティは、「一番手前のシート」を返しますから、 おっしゃるように一枚しか移動しませんね。 「選択しているすべてのシート」を得るには"SelectedSheets"プロパティを使います。 未検証ですが、  Activesheets.Move の部分を  ActiveWindow.SelectedSheets.Move とすればご要望のように動作するのではないかと。

miz_k
質問者

補足

ありがとうございます。 SelectedSheets.Move だけではエラーがでてしまったので 困り果てていたのですが ActiveWindow.SelectedSheets.Move としたところ思ったとおりの結果が得られました。 助かりました!!

その他の回答 (1)

回答No.1

自動記録をしてみたでしょうか 初心者の時は 自動記録が参考になります Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select Sheets("Sheet3").Activate Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Move Activesheets.Move はアクティブなので 今見ているシートのみになります 記録すると上のようになると思います 不要なところを省略して Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Move これなら3つ移動できます

miz_k
質問者

補足

ありがとうございます。 しかし選択するのは "一定ではない複数のシート"ですので この方法ではダメでした。 でも大変参考になりましした。 決まった数のシートを選択するには Arrayを使うのですね。