Excel VBA質問箱 IV

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

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


1127 / 13645 ツリー ←次へ | 前へ→

【76169】フォルダー内の複数のエクセルのD列に『2-』があるか否かチェックしたい ペンネーム船長 14/10/8(水) 11:44 質問[未読]
【76173】Re:フォルダー内の複数のエクセルのD列に... γ 14/10/8(水) 19:12 発言[未読]
【76176】Re:フォルダー内の複数のエクセルのD列に... ペンネーム船長 14/10/8(水) 22:37 お礼[未読]

【76169】フォルダー内の複数のエクセルのD列に『...
質問  ペンネーム船長  - 14/10/8(水) 11:44 -

引用なし
パスワード
   【質問】
デスクトップの『test』フォルダーの中に複数のエクセルがあり、それらエクセルには全て『あ』シートがあります。
それらエクセルのシート『あ』のD列に『2-』があるか否か調べたいのですが、下記のコードでは上手く行きません。
Targetの列の指定がまずいのかも知れませんし、Findの検索対象にExecuteExcel4Macro(Target)が使えないのかも知れません。
宜しくご教授お願いします。

Private Sub CommandButton1_Click()

  Dim buf As String, Target As String
  Const Path = "C:\Users\○●\Desktop\test\"
  buf = Dir(Path & "*.xls")

  Do While buf <> ""
    Target = "'" & Path & "[" & buf & "]あ'!R4"  'D列
   '*****シート『あ』のD列をチェックする*****
    Dim f As Range
    Set f = ExecuteExcel4Macro(Target).Find("2-", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, matchbyte:=False)

    If Not f Is Nothing Then 'もしもあったら
     MsgBox "『2-』が見つかりました"
   Else
     MsgBox "このシートに不備を見つけました(『2-』が見当たらない)"
   End If
     buf = Dir()
  Loop

End Sub

【76173】Re:フォルダー内の複数のエクセルのD列...
発言  γ  - 14/10/8(水) 19:12 -

引用なし
パスワード
   ▼ペンネーム船長 さん:
> Findの検索対象にExecuteExcel4Macro(Target)が使えないのかも知れません。
ご懸念のとおり、ExecuteExcel4Macroは単一のセルを取得しかできません。
(複数なら繰り返し取得することになります)
ですから、Findする対象とはなり得ません。

普通にファイルを開いて、データを取得してください。

【76176】Re:フォルダー内の複数のエクセルのD列...
お礼  ペンネーム船長  - 14/10/8(水) 22:37 -

引用なし
パスワード
   γさま

ご指摘有難う御座います。
列で検索するのをあきらめ、D列のひとつひとつのセルをチェックする方法にしました。
1000行もチェック出来れば十分だったのでこの方法でやることにしました。
不備が見つかったエクセルはシート『調査結果』に書き出すようにしました。

Private Sub CommandButton1_Click()

  Dim buf As String, Target As String, i As Integer, n As Integer, nn As Integer
  Const Path = "C:\Users\○●\Desktop\test\"
  buf = Dir(Path & "*.xls")
  
  Do While buf <> ""
    For i = 1 To 1000
    n = 0
    nn = 0
    Target = "'" & Path & "[" & buf & "]あ'!R" & i & "C4" ’D列(1行〜1000行)をチェック対象とする
     If ExecuteExcel4Macro(Target) = "2-" Then
       MsgBox buf & "の" & "セルD" & i & "に『2-』がありました"
       nn = n + 1 'セルに『2-』があったときに1を加える
       Exit For
     End If
    Next i
     If nn = 0 Then '合計が0のとき、そのエクセルの名前を書き出す
       MsgBox "このシートに不備を見つけました(『2-』が見当たらない)"
        Worksheets("調査結果").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = buf
     End If
    buf = Dir()
  Loop
  
End Sub

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