- ベストアンサー
選択されているシートを移動したい
一定ではない複数のシートがあり、 そのうちの右端の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枚しか移動できないのです。 教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
質問文では Activesheets.Move となっていますが、もし、 Activesheet.Move としているのであれば、 "Activesheet"プロパティは、「一番手前のシート」を返しますから、 おっしゃるように一枚しか移動しませんね。 「選択しているすべてのシート」を得るには"SelectedSheets"プロパティを使います。 未検証ですが、 Activesheets.Move の部分を ActiveWindow.SelectedSheets.Move とすればご要望のように動作するのではないかと。
その他の回答 (1)
- anotherone
- ベストアンサー率54% (35/64)
自動記録をしてみたでしょうか 初心者の時は 自動記録が参考になります Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select Sheets("Sheet3").Activate Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Move Activesheets.Move はアクティブなので 今見ているシートのみになります 記録すると上のようになると思います 不要なところを省略して Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Move これなら3つ移動できます
補足
ありがとうございます。 しかし選択するのは "一定ではない複数のシート"ですので この方法ではダメでした。 でも大変参考になりましした。 決まった数のシートを選択するには Arrayを使うのですね。
補足
ありがとうございます。 SelectedSheets.Move だけではエラーがでてしまったので 困り果てていたのですが ActiveWindow.SelectedSheets.Move としたところ思ったとおりの結果が得られました。 助かりました!!