[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート枚数を変数にしたい』(スー)
二つのファイルがあり、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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.