Office関連

MDBファイルから読み込んだ単語を検索し、ヒットしたら単語の意味をコメントにするWordマクロ

MDB(Accessデータベース)ファイルを作成してデータを格納するExcelマクロ」で辞書データを格納したMDBファイルを作成しました。
折角なのでこのファイルを利用したWordマクロを考えてみます。

Option Explicit

Public Sub AddCommentFromMDB()
  Dim DBFilePath As String
  Dim con As String
  Dim cn As Object
  
  Const TableName As String = "tblDic" 'テーブル名
  Const FieldName1 As String = "word" 'フィールド名1
  Const FieldName2 As String = "meaning" 'フィールド名2
  
  DBFilePath = ThisDocument.Path & Application.PathSeparator & "MyDB.mdb"
  If Len(Dir(DBFilePath)) < 1 Then
    MsgBox "MDBファイルが見つかりませんでした。" & vbCrLf & "処理を中止します。", vbExclamation + vbSystemModal
    Exit Sub
  End If
  con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFilePath
  
  Set cn = CreateObject("ADODB.Connection")
  cn.Open con
  With CreateObject("ADODB.Recordset")
    '.Open TableName, cn, 1, 1
    .Open "SELECT * FROM " & TableName & " WHERE " & FieldName1 & " LIKE 'a%'", cn, 1, 1 '"a"から始まる単語のみ処理
    If .RecordCount <> 0 Then
      .MoveFirst
       Do Until .EOF
         FindProc .Fields(FieldName1).Value, .Fields(FieldName2).Value
         .MoveNext
         DoEvents
       Loop
    End If
    .Close
  End With
  cn.Close
  Set cn = Nothing
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

Private Sub FindProc(ByVal txt1 As String, ByVal txt2 As String)
  Dim r As Word.Range
  
  Set r = ActiveDocument.Range(0, 0)
  With r.Find
    '検索条件は適宜変更
    .ClearFormatting
    .ClearAllFuzzyOptions
    .Text = txt1
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = True
    .MatchWholeWord = True
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
    Do While .Execute
      r.Comments.Add r, txt2 'コメント追加
    Loop
  End With
  Set r = Nothing
End Sub

上記マクロを実行すると、MDBファイルから読み込んだ単語を元にWord文書内を検索し、ヒットした場合はMDBファイルから読み込んだ単語の意味をコメントにする処理を行います。
(全レコードを処理すると件数が多いので、上記コードではWHERE句で処理する単語を制限しています。)

今回は簡単にテストしただけなので検索精度を考慮していません。
より正確に処理する場合は、検索条件やMDBに格納するデータ内容を変更する必要があります。

MDB(Accessデータベース)ファイルを作成してデータを格納するExcelマクロ前のページ

「DQNネーム辞書」を更新しました。次のページ

関連記事

  1. Office関連

    [Office 2013]コントロール日英比較表

    日本語版と英語版のOffice 2013でコントロール(コマンド)名や…

  2. Office関連

    Officeアプリケーションのバージョン情報ダイアログから情報を取得するVBScript

    自分の手間を減らすためのスクリプトシリーズ、今回はWordやExcel…

  3. Office関連

    Office 2016のコントロールIDリストが公開されました。

    昨年の秋にリリースされたOffice 2016。そのコントロールI…

  4. Excel

    指定したフォルダ内にあるExcelファイルを一つにまとめるVBAマクロ

    複数あるファイルを一つにまとめるにはどうすれば良いか?という質問をいた…

  5. Office関連

    Microsoft Graph SDK for PHPを使ったAPIの呼び出しサンプル

    知らない間に(恐らくBuild 2017のタイミングに合わせて)Mic…

コメント

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP