Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


27284 / 76738 ←次へ | 前へ→

【54777】Workbooksの引数でフルパス指定が原因?
質問  jax_6  - 08/3/29(土) 16:29 -

引用なし
パスワード
   [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
1 hits

【54777】Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 16:29 質問
【54778】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 16:43 発言
【54780】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 17:38 質問
【54781】Re:Workbooksの引数でフルパス指定が原因? n 08/3/29(土) 17:57 発言
【54782】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/29(土) 18:32 お礼
【54783】Re:Workbooksの引数でフルパス指定が原因? n 08/3/29(土) 19:27 発言
【54792】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/30(日) 12:12 お礼
【54793】Re:Workbooksの引数でフルパス指定が原因? jax_6 08/3/30(日) 12:24 発言

27284 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free