|
[Excel2003 WindowsXPsp2]
複数ファイルから、特定のセルを抜き出すプログラムを書いています。
・下記の Workbooks(filePath).Activate でエラーになるのは何故でしょうか
(インデックスが有効範囲にありません。(Error 9))
・MSDNで一次資料のリファレンスを探そうとしたのですが発見できませんでした。宜しければURLを教えて頂けないでしょうか。(情けないお願いで申し訳ありません)
# VBA は今日初めて挑戦してみました。プログラムの経験は JavaScript(中級)のみです。書き方がかなり違うし変数に型があるしで頭とか目とか心が折れかかり質問させて頂きました。宜しくお願い致します。
----------------------
Sub 抽出実行ボタン()
Workbooks("PickCells.xls").Worksheets(1).Activate
' ↓抽出対象のフォルダパス・ファイルパスが書いてある列
Dim filePathCol As String
filePathCol = "B"
' ↓抽出対象のファイルが列挙してある最初の行
Dim counter_file As Integer
counter_file = 8
sv_counter_file = counter_file
' ↓抽出対象のセルが列挙してある列
Dim cellPlaceCol As String
cellPlaceCol = "D"
' ↓抽出対象のセルのシートが列挙してある列
Dim cellSheetPlaceCol As String
cellSheetPlaceCol = "E"
' ↓抽出対象のセルが列挙してある最初の行
Dim counter_cell As Integer
counter_cell = 8
sv_counter_cell = counter_cell
' ↓内容のあるセルだけ処理したい場合はこのやり方で「普通」か?
Do While ActiveSheet.Range(filePathCol + CStr(counter_file)).Value <> ""
Dim filePath As String
filePath = ActiveSheet.Range(filePathCol + CStr(counter_file)).Value
' ↑ループ判定でも見てるのにまた同じものを見るのは・・
' JavaScriptなら条件節で変数への代入も同時に書ける
' 例 if( a=b.value ){ alert(a); }
Workbooks.Open Filename:=filePath
Workbooks("PickCells.xls").Worksheets(1).Activate
Do While ActiveSheet.Range(cellPlaceCol + CStr(counter_cell)).Value <> ""
Dim cellPlace As String
cellPlace = ActiveSheet.Range(cellPlaceCol + CStr(counter_cell)).Value
Dim cellSheet As Integer
cellSheet = ActiveSheet.Range(cellSheetPlaceCol + CStr(counter_cell)).Value
MsgBox (filePath)
Workbooks(filePath).Activate
Worksheets(cellSheet).Activate
Dim targetValue As String
targetValue = ActiveSheet.Range(cellPlace).Value
Workbooks(PickCells.xls).Worksheets(2).Activate
If counter_file = sv_counter_file Then
ActiveSheet.Cells(1, counter_cell - sv_counter_cell + 1).Value = cellPlace + "(" + cellSheet + ")"
End If
ActiveSheet.Cells(counter_file - sv_counter_file + 2, counter_cell - sv_counter_cell + 1).Value = targetValue
Workbooks("PickCells.xls").Worksheets(1).Activate
counter_cell = counter_cell + 1
Loop
Workbooks(filePath).Close
Workbooks("PickCells.xls").Worksheets(1).Activate
counter_file = counter_file + 1
' ↑counter++ や += は無い?
Loop
End Sub
|
|