| 
    
     |  | お世話になります。 
 質問1:
 シートが1つの場合は問題なく照合できたのですが
 複数シートがある際、捺印数の照合した結果、”問題なし”としか
 表示されないのですがどのうように訂正すればよろしいでしょうか?
 
 
 質問2:
 
 下記のコードの構造を教えて頂きたいのですが、図形(msoPicture)
 があればi2に1が代入されるというのは理解できるのですが、なぜ
 i2 <> 捺印数なのか理解できませんでした。
 恐れ入りますがご指導頂ければ幸いです。
 
 
 If Not Intersect(MyOb.TopLeftCell, fSh.Range("A1:BV9")) Is Nothing Then
 i2 = i2 + 1
 End If
 End If
 Next
 fWb.Close False
 If i2 <> 捺印数 Then Exit For
 
 
 Option Explicit
 
 Sub image_count()
 Dim myFso As Object
 Dim MyOb As Object
 Dim sh1 As Worksheet
 Dim sh2 As Worksheet
 Dim c As Range
 Dim oFold As String
 Dim fName As String
 Dim i As Long
 Dim myFile As Object
 Dim i2 As Long
 Dim e As String
 Dim 捺印数 As String
 Dim シート数 As String
 Dim y As Long
 Dim fWb As Workbook
 Dim fSh As Worksheet
 
 
 Set myFso = CreateObject("Scripting.FileSystemObject")
 Set sh1 = Sheets("一覧表")
 Set sh2 = Sheets("元保管場所(データベース)")
 
 
 For Each c In sh1.Range("F11", sh1.Range("F" & sh1.Rows.Count).End(xlUp))
 i = c.Row
 捺印数 = sh1.Range("AF" & i).Value
 With sh1.Range("J" & i)
 
 .Font.ColorIndex = xlAutomatic
 End With
 fName = ""
 'F列にハイパーリンクなければスキップ
 If c.Hyperlinks.Count > 0 Then
 oFold = c.Offset(, 0).Hyperlinks(1).Address
 'リンク先フォルダが存在するものだけ
 If myFso.FolderExists(oFold) Then
 For Each myFile In myFso.GetFolder(oFold).Files
 e = LCase(myFso.getextensionname(myFile.Name))
 If e = "xls" Then
 fName = myFile.Name
 シート数 = sh1.Range("AG" & i).Value
 'ワークシート数が1つの場合
 If シート数 = 1 Then
 
 'ブックオープンし、リンク先フォルダのxlsファイルに図形があるか判定
 Set fWb = Workbooks.Open(oFold & "\" & fName)
 For Each fSh In fWb.Worksheets
 i2 = 0
 For Each MyOb In fSh.Shapes '
 If MyOb.Type = msoPicture Then  '
 If Not Intersect(MyOb.TopLeftCell, fSh.Range("A1:BV9")) Is Nothing Then
 '左上角指定で選択されたシートのみを対象にする
 'このifが無いとシート全体が対象になる
 i2 = i2 + 1
 End If
 End If
 Next
 fWb.Close False
 If i2 <> 捺印数 Then Exit For
 Next
 If i2 <> 捺印数 Then Exit For
 End If
 
 
 If シート数 >= 2 Then
 
 'ブックオープンし、リンク先フォルダのxlsファイルに図形があるか判定
 Set fWb = Workbooks.Open(oFold & "\" & fName)
 For Each fSh In fWb.Worksheets
 y = fWb.Sheets.Count
 
 For n = 1 To y        'シート数分だけループ
 Sheets(n).Select
 i2 = 0
 
 For Each MyOb In fSh.Shapes '
 
 If MyOb.Type = msoPicture Then  '
 
 
 If Not Intersect(MyOb.TopLeftCell, fSh.Range("A1:BV9")) Is Nothing Then
 '左上角指定で選択されたシートのみを対象にする
 'このifが無いとシート全体が対象になる
 i2 = i2 + 1
 
 End If
 End If
 Next
 
 If i2 <> 捺印数 Then Exit For
 
 
 Next
 
 
 fWb.Close False
 If i2 = 捺印数 Then Exit For
 
 Next
 
 End If
 
 
 End If
 Next
 
 With sh1.Range("J" & i)
 .Value = "問題" & IIf(i2 = 捺印数, "なし", "あり")
 .Font.ColorIndex = IIf(i2 = 捺印数, xlAutomatic, 3)
 End With
 
 End If
 
 End If
 Next
 
 Application.ScreenUpdating = True
 
 MsgBox cnt & " 個のファイルが捺印されています。", vbInformation
 
 End Sub
 
 
 |  |