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

2014年9月の人気記事前のページ

[Office用アプリ]第三回 Apps for Office 勉強会で登壇しました。次のページ

関連記事

  1. Office関連

    [OneNote]クリップボードから新しいページに貼り付け

    何かをメモするとき、ファイルを保存するとき等々、私はよくOneNote…

  2. Office関連

    文字列を横方向に移動するWordマクロ(WordBasic編)

    いつもお世話になっているWord MVPの新田さんが、まるでカニの動き…

  3. Office関連

    VBAの力量をはかる3つの質問

    先日、Twitterではけた氏の面白いツイートがありました。3…

  4. Office関連

    Office 2016 Previewをインストールしてみました。

    「Microsoft、「Office 2016」と「Skype for…

  5. Office関連

    Google Calendar APIを使って日本の祝日を取得するVBAマクロ

    祝日の一覧を用意する必要があったので、Google Calendar …

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP