|
とりあえず動くようになりました。>>0ではカウンターの初期化処理が抜けていたり、いろいろ問題があったのでもう一度動くようになったコードを載せます。
お騒がせ致しました。
>>0で質問していた箇所は、アクティブになっていないことを利用して
Workbooks(2).Activate と書くことで動くようになりました。
が、興味+名前の方が確実なのとで、できればファイル名で指定したいのですが、フルパスしかない場合は文字列操作でファイル名の部分だけ抽出するしかないのでしょうか。
引き続き宜しくお願い致します。
-----------------------
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
' ↓↓問題箇所→Workbooks(filePath).Activateと書くとエラー
Workbooks(2).Activate
' ↑↑問題箇所→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 + "(" + CStr(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
counter_cell = 8
' ↓↓問題箇所→Workbooks(filePath).Closeと書くとエラー
Workbooks(2).Close
' ↑↑問題箇所→Workbooks(filePath).Closeと書くとエラー
Workbooks("PickCells.xls").Worksheets(1).Activate
counter_file = counter_file + 1
' ↑counter++ や += は無い?
Loop
End Sub
|
|