Office関連

ちゃうちゃう! 2.0を操作するWordマクロ

テキスト比較ソフト「ちゃうちゃう!」がバージョンアップされました。」でも紹介している「ちゃうちゃう!」は、プログラムのコード比較や翻訳作業を行う際の原文・訳文比較などに使える便利なソフトです。

文をソフトに貼り付けてから比較処理を実行するわけですが、文の貼り付けは「テキスト比較 ドラッグ&ドロップは可能?」にあるように、ドラッグ&ドロップをすることでも対応可能です。

ただ、ライターや翻訳者の方は、PCでの作業をほとんどキーボードのみで行う方も多く、いちいちマウスに持ち替える事自体面倒に思う人も多いだろうと思います。

そこで、マウス操作無しでちゃうちゃう!を操作できるよう、Wordのマクロを考えてみました。

※ 下記マクロはちゃうちゃう!のユーザー認証が終わっていることを前提としたものです。ちゃうちゃう!起動時に認証を促すダイアログが表示される場合は、先にユーザー認証(有料)を行ってください。
※ 「ChawChawExePath」で指定している「ChawChaw2.exe」のパスは必要に応じて変更してください。

Option Explicit

Private Const ChawChawExePath As String = "C:\Program Files\ちゃうちゃう! 2.0\ChawChaw2.exe" '[ChawChaw2.exe]のパス  ※ 必要に応じて変更
Private Const ChawChawTaskName As String = "ちゃうちゃう! 2.0"
Private Const WM_COMMAND = &H111

Public Sub PasteLeftChawChawWindow()
'ちゃうちゃう!の左ウィンドウに文字列貼り付け
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HFF01, 0  '左ウィンドウ選択
  tChawChaw.SendWindowMessage WM_COMMAND, &HE125, 0 '文字列貼り付け
End Sub

Public Sub PasteRightChawChawWindow()
'ちゃうちゃう!の右ウィンドウに文字列貼り付け
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HFF00, 0 '右ウィンドウ選択
  tChawChaw.SendWindowMessage WM_COMMAND, &HE125, 0 '文字列貼り付け
End Sub

Public Sub ClearLeftChawChawWindow()
'ちゃうちゃう!の左ウィンドウをクリアする
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HFF01, 0 '左ウィンドウ選択
  tChawChaw.SendWindowMessage WM_COMMAND, &HE121, 0 'すべて消去
End Sub

Public Sub ClearRightChawChawWindow()
'ちゃうちゃう!の右ウィンドウをクリアする
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HFF00, 0 '右ウィンドウ選択
  tChawChaw.SendWindowMessage WM_COMMAND, &HE121, 0 'すべて消去
End Sub

Public Sub CompareFullTextChawChaw()
'ちゃうちゃう!で全文比較実行
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &H8015, 0 '全文比較
End Sub

Public Sub TileChawChawWindowsHorizontally()
'ちゃうちゃう!のウィンドウを上下に並べて表示
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HE133, 0 '上下に並べて表示
End Sub

Public Sub TileChawChawWindowsVertically()
'ちゃうちゃう!のウィンドウを左右に並べて表示
  Dim tChawChaw As Word.Task
  
  Set tChawChaw = GetChawChawTask()
  If tChawChaw Is Nothing Then
    MsgBox "ちゃうちゃう!が見つかりませんでした。" & vbCrLf & _
           "処理を中止します。", vbCritical + vbSystemModal
    Exit Sub
  End If
  tChawChaw.SendWindowMessage WM_COMMAND, &HE134, 0 '左右に並べて表示
End Sub

Private Function GetChawChawTask() As Word.Task
'ちゃうちゃう!のTaskオブジェクト取得
  Dim ret As Word.Task
  Dim t As Word.Task
  
  Set ret = Nothing '初期化
  If IsChawChawVisible = False Then Shell ChawChawExePath
  For Each t In Application.Tasks
    If t.Visible = True And t.Name = ChawChawTaskName Then
      Set ret = t
      Exit For
    End If
  Next
  Set GetChawChawTask = ret
End Function

Private Function IsChawChawVisible() As Boolean
'ちゃうちゃう!の表示状態取得
  Dim t As Word.Task
  Dim ret As Boolean
  
  ret = False '初期化
  For Each t In Application.Tasks
    If t.Visible = True And t.Name = ChawChawTaskName Then
      ret = True
      Exit For
    End If
  Next
  IsChawChawVisible = ret
End Function

各マクロの説明はコメントで記載してある通りですが、たとえば「PasteLeftChawChawWindow」プロシージャは、実行するとクリップボードにある文字列をちゃうちゃう!の左側のウィンドウに貼り付けます。

ControlChawChaw_01

そしてこれらのマクロをキーボードに割り当てることで(「「キーボードのユーザー設定」でキーボードにマクロを登録する方法|みんなのワードマクロ」参照)、キーボードのみでちゃうちゃう!を操作できるようになります。

Word&ちゃうちゃう!ユーザーの皆さん、是非お試しください。

■ 関連Webページ

・「ちゃうちゃう!」で2つの文書を比較するWordマクロ
//www.ka-net.org/blog/?p=1334
・テキスト比較ソフト「ちゃうちゃう!」がバージョンアップされました。
//www.ka-net.org/blog/?p=4724
・2つの文書を比較するWordマクロ
//www.ka-net.org/blog/?p=4734

関連記事

  1. Office関連

    代替テキストを削除するPowerPointマクロ

    PowerPointの図やSmartArt、グループやグラフといった視…

  2. Office関連

    オデッセイ コミュニケーションズ主催のExcel VBA入門セミナーに参加しました。

    今月19日に開催されたオデッセイ コミュニケーションズさん主催の「Ex…

  3. Office関連

    OfficeのコマンドID(コントロールID)リストがGitHubで公開されました。

    前回の記事でも触れていますが、メインストリームサポート期間内のOffi…

  4. Office関連

    プロダクトIDを取得するWordマクロ

    下記質問用に書いたコードです。「バージョン情報」で表示されるプロダ…

  5. Office関連

    インストールされているアプリケーション一覧を取得するVBAマクロ

    端末にインストールされているアプリケーション名を調べる必要があったので…

コメント

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

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP