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に格納するデータ内容を変更する必要があります。

関連記事

  1. Office関連

    Acrobatを使ってPDFファイルを結合するVBAマクロ

    前回の記事では、iTextSharpを使ってPDFファイルを結合するP…

  2. Office関連

    「入門レベルでは決して足りない実務に必須のスキルとは ExcelVBA 実戦のための技術」レビュー

    久しぶりにVBA参考書籍のレビューです。今回は沢内晴彦氏が執筆され…

  3. Office関連

    アラビア文字かどうかを判別するWordマクロ

    以前mougの質問用に書いたコードが出てきたので、一部修正しました。…

  4. Office関連

    [Win32 API]PowerPointマクロにショートカットキーを割り当てる。

    数日前、“PowerPointだとマクロにショートカットキーを割り当て…

  5. Office関連

    Excel 2016 Previewで追加された新しい関数

    ※ 下記情報はOffice 2016 Preview版を元にしています…

  6. Office関連

    [Word 2013]表形式のデータ入力にはコレが便利!?「コンテンツ繰り返しコントロール」の紹介

    Wordにはユーザー入力フォームを作るのに便利な機能「コンテンツ コン…

コメント

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP