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関連

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

  2. Office関連

    Windows 10 Technical PreviewにOffice XPをインストールしてみまし…

    「最新ビルドを詳細レビュー! Windows 10 Technical…

  3. Office アドイン

    OfficeJS Snippet Explorerを使って新しいOffice アドインを体験する。

    前回の記事と打って変わって元のOffice アドインの記事に戻ります(…

  4. Office アドイン

    [Office用アプリ]「あいさつ文の挿入」を作業ウィンドウアプリに移植してみる。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  5. Office関連

    埋め込んだブックへのユーザー入力を活用する

    「Excel Web Appのブック埋め込みを試してみました。」でEx…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP