Excel VBA質問箱 IV

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

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


27281 / 76738 ←次へ | 前へ→

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

引用なし
パスワード
   とりあえず動くようになりました。>>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
0 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 発言

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