【VBA】複数シートのデータを順番に計算して、結果を別ブックのシートに元データのシートと同じ順番に書き込む
VBAで回帰分析を行うなシステムを作っています。
現在、一つのシートをからデータを読み込みそのシートの隣に結果用シートを作る形で作ってみました(ここまではうまくいっております)。ここから、データが複数シートあるとしてそれらを全部計算して、結果を別ブックに元データと同じ順番で吐き出すようにしたいと思っております。
基本的には、各シートに行う処理は同じです。
どなたかよろしくご教授ください。
よろしくお願いいたします。
###該当(元の)のソースコード
※以下のコードは問題なく走りました。
Sub regression()
Dim myFileName(1) As String '処理するファイル名
Dim ws(1) As Worksheet
Dim Ya As String 'Y
Dim Xa As String 'X
Dim SName As String 'シート名
Ya = "A2:A101" 'Y範囲 Xa = "B2:B101" 'X範囲 SName = "Sheet1" 'シート名 'ファイル選択処理 myFileName(1) = Application.GetOpenFilename(Title:="ファイル選択", filefilter:="Excelブック(*.xlsx),*.xlsx)") 'キャンセル時の処理 If myFileName(1) = "False" Then Exit Sub '処理ファイルを開く Workbooks.Open Filename:=myFileName(1) 'パスを除いたファイル名を取得 myFileName(1) = Mid(myFileName(1), InStrRev(myFileName(1), "\") + 1) '分析用シート名のセット Set ws(1) = Workbooks(myFileName(1)).Sheets(ShName) '出力用シート名の設定 myFileName(0) = myFileName(1) & "分析結果" & ThisWorkbook.Sheets.Count
'分析ツールの実行
Application.Run "ATPVBAEN.XLAM!Regress", ws(1).Range(Ya), ws(1).Range(Xa), False, False, , myFileName(0), False, False, False, False, , False
'出力用シート名のセット
Set ws(0) = Workbooks(myFileName(1)).Sheets(myFileName(0))
'シートの移動
ws(0).Move Before:=ThisWorkbook.Sheets(1)
'分析用ファイルの終了
Workbooks(myFileName(1)).Close savechanges:=False
End Sub
###試したこと
① Sheets(Array("Sheet1", "Sheet2")).Selectを使いましたが、その前に計算されたシートに上書きされてしまいました。
② For Each ws(1) In Workbook
ws(1).Activate
Next ws(1)
を上のコードの
Set ws(1) = Workbooks(myFileName(1)).Sheets(ShName)
~ws(0).Move Before:=ThisWorkbook.Sheets(1)
まで挟んで見ましたが、For Each ws(1) In Workbookで「コンパイルエラー:Workbookが定義されていません」となりました。
###補足情報(言語/FW/ツール等のバージョンなど)
Excel2016
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/10 05:19
2017/08/10 07:47 編集