[[20171229233820]] 『シート枚数を変数にしたい』(スー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート枚数を変数にしたい』(スー)

二つのファイルがあり、filenameが4シートで、newnameのSheet12の後ろに移動しようとして、
VBに下記のように記述しました。

Dim count As Long
Dim count1 As Long

        Windows("(" & bango & ")" & filename).Activate
        count = Worksheets.count               'シート数を取得

        Workbooks.Open filename:=ThisWorkbook.Path & "\(" & bango1 & ")" & newname
        Windows("(" & bango1 & ")" & newname).Activate
        count1 = Worksheets.count              'シート数を取得

        Windows("(" & bango & ")" & filename).Activate

       Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Move after:=Workbooks("(" & bango1 & ")" & newname).Sheets(12)

上のように、"Sheet1", "Sheet2", "Sheet3", "Sheet4" と、Sheets(12)と記述したらできたのですが、
シート枚数と最後のシート番号を変数に置き換えて実行したいと考えて、
countを As Worksheet にしたり、Array(Sheets(count)) にしたり、
いろいろ試したのですが、うまくできませんでしたので、
ご指導をお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 こんな書き方をしたらどうですか?
 Windowsは普通余り使いません。Workbookを指定する方式が普通です。

 また、Workbook(や Worksheet)を逐一アクティブにしたりする必要はありません。

 なお、すべてのシートを移すことはできません。
 それをすると支障があると思います。
 いったんコピーしてから処理すればよいでしょう。

 ↓は、一例として、シートを一つだけ残す場合を示しました。

 Sub test()
     Dim wb1 As Workbook
     Dim wb2 As Workbook
     Dim count As Long
     Dim k As Long

     Set wb1 = Workbooks("(" & bango & ")" & Filename)
     count = wb1.Worksheets.Count               'シート数を取得

     Set wb2 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\(" & bango1 & ")" & newname)

     For k = 1 To count - 1
         wb1.Worksheets(k).Move after:=wb2.Worksheets(wb2.Worksheets.count)
     Next
 End Sub

(γ) 2017/12/30(土) 08:27


(γ)様 ありがとうございました。
お陰様で、思い通りの処理ができました。
(スー) 2017/12/30(土) 09:35

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.