sakamttyの日記

天文、宇宙、子育て、コスメ、本・絵本について書いてます。

vba

Sub HTMLファイル内の文字列検索()
    Dim フォルダパス As String
    Dim 対象ファイル As String
    Dim ファイル内容 As String
    Dim ファイル番号 As Integer
    Dim 行番号 As Long
    
    ' フォルダパスを設定
    フォルダパス = "C:\Path\To\Your\Folder" ' 対象のフォルダのパスに置き換えてください
    
    ' フォルダ内のHTMLファイルを処理
    対象ファイル = Dir(フォルダパス & "\*.html")
    
    Do While 対象ファイル <> ""
        ' ファイルを開く
        ファイル番号 = FreeFile
        Open フォルダパス & "\" & 対象ファイル For Input As ファイル番号
        
        ' ファイル内容を一括で読み込む
        ファイル内容 = Input$(LOF(ファイル番号), ファイル番号)
        
        ' ファイルを閉じる
        Close ファイル番号
        
        ' "安全上のご注意" を検索
        行番号 = InStr(1, ファイル内容, "安全上のご注意")
        
        ' 発見した場合はメッセージを表示
        If 行番号 > 0 Then
            MsgBox "ファイル名: " & 対象ファイル & vbCrLf & "見つかった行番号: " & GetLineNum(ファイル内容, 行番号)
        End If
        
        ' 次のファイルを取得
        対象ファイル = Dir
    Loop
End Sub
 
Function GetLineNum(text As String, position As Long) As Long
    ' 指定位置が含まれる行番号を取得する関数
    Dim lines As Variant
    lines = Split(text, vbCrLf)
    Dim totalLength As Long
    Dim i As Long
    For i = LBound(lines) To UBound(lines)
        totalLength = totalLength + Len(lines(i)) + 2 ' 行末のCrLf分も含む
        If totalLength >= position Then
            GetLineNum = i + 1
            Exit Function
        End If
    Next i
End Function