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
 
 

vba

Sub 検索()
    Dim ファイルパス As String
    Dim 検索ワード As String
    Dim テキスト行 As String
    Dim 行番号 As Long
    
    ' ファイルパスと検索ワードを設定
    ファイルパス = "C:\Path\To\Your\File.txt" ' ファイルの実際のパスに置き換えてください
    検索ワード = "安全のご注意"
    
    ' ファイルを開く
    Open ファイルパス For Input As #1
    
    ' ファイルを行ごとに読み込み、検索ワードが含まれているか確認
    行番号 = 0
    Do While Not EOF(1)
        Line Input #1, テキスト行
        行番号 = 行番号 + 1
        If InStr(1, テキスト行, 検索ワード) > 0 Then
            MsgBox 検索ワード & " が見つかりました。行番号: " & 行番号
            Exit Do
        End If
    Loop
    
    ' ファイルを閉じる
    Close #1
End Sub