Wordで複数の単語を一括置換するマクロはありませんか?
産業翻訳をしています。
現在は、テキスト文書に対し、手作業では不可能な大量の単語を、自作の辞書を使って一括置換しています。
水野麻子さんのブログhttp://ameblo.jp/saglasie/entry-10519224366.htmlによると、
この作業をWordでできて、さらに置換部分をハイライト表示したり、置換した単語のリストが自動的に作成されるマクロがあるようなのですが、ネット上で検索しても見つかりません。
無料公開はされていないのでしょうか?
こうした一括置換機能はどんなソフトにも標準装備されている、といった記述もネット上で見つかるのですが、どこにあるのかわかりません。
簡易版なら同サイトで公開されていますが、ハイライト表示やリスト自動作成は付加されていません。
もし無料公開がないのでしたら、このマクロの電子版や本の購入も考えています。
このマクロの入手経路をご存知の方おられませんか?
No.7ベストアンサー
- 回答日時:
>プログラミングに関して初心者なので、「標準モジュールを挿入して~」というあたりが分かりません。
Alt + F11 ->(VBEditor)-プロジェクト・ウィンドウで、開いたブックになっていることを確認して、- 挿入--標準モジュール をクリックすれば、そのモジュールが現れます。(図を参照)
たぶん、インターネット検索で、「マクロの基本」「標準モジュール」で出てくるのではないかと思います。VBAを扱うには、もう少し、基本的なマクロの使い方は知ったほうがよいですね。
ただ、今回のものは、新しいブックのThisDocument に貼り付けてしまってもエラーは発生しません。今回書いた内容のマクロは、偶然に、他のモジュールでも動くように書かれていますが、既に書いた所に、付け加えて貼り付ける場合は、一番トップから書かないといけません。今回のようなスタイルのものは、出来るなら、基本的には標準モジュールに書きます。
今回のようなスタイルは全バージョン向けにはできておりません。基本的には、97以降なら変わらないはずですが、どうしても、Wordにはない機能を補う必要性が出てきます。ExcelのVBAに借りるという方法もないわけではないのですが、せっかく、Office 2003 以降では、VB6 RunTime も標準ではインストールされていますから、それを使わない手はありません。水野さんのマクロは、その辺りは、どこまでサポートされているか分かりません。
それと、Excel VBAと大きな違いは、MS-Wordにはマクロを保存しておく場所に困るということです。私は、個別のドキュメントのモジュールに置くということをしていますが、最終の設計には、アドインを要求させられているように感じます。
しかし、その後、バージョンが上がって、MS-Wordは、COMアドインに移行しつつあるようです。Excel VBAよりもワンレベルもツーレベルも高い技術が要求されます。特に、MS-Word 2003 は、一部では、クラス・インスタンスの知識を要求されます。また、2007となると、一部で、Word Basic が出てきます。
それから、私は、「秀丸エディタ」は詳しくは知りませんが、いろいろツールが出ているようですね。当初、使おうと思ったこともあったのですが、当時は、正規表現で、いわゆる、Multiline 設定というか、改行を越えての検索・置換が出来ないという問題があって、私は利用しなかった覚えがあります。
私は、VZ エディタ→ Wz で続いていますが、Ver.6は、経営母体が変わったので、更新はしませんでした。こちらのマクロは、Cライクなので、なかなか飛びつきにくいです。その代わり、記録マクロの機能を持っています。正規表現は、新しい「秀丸エディタ」の正規表現ライブラリには劣りますが、その代わり、見米さんという方の、"YGrep"というアドインがあるので、マクロのように文章の置換が可能です。
産業翻訳でも、分野がありますから、コンピュータの英文に慣れていれば、MS-Word Macro の専門書は、例えば、オライリーなどで出ている本があります。日本語よりもマシだと思います。英語を勉強すれば、分かるようになると言っていた方がいましたが、ネイティブでも分からない人は分かりません。慣れしかありません。
MS-Wordで開発するなら、まだ、いろんな手段がありますが、簡単に使うならともかく、本格的には、なかなか入れない世界かもしれません。とにかく、MS-Word VBAは、Excelとは違ってユニークな世界かもしれません。
最後に、私の書いたようなVBAのコードは、基本的に著作権を主張できません。もちろん、ここの掲示板に、私個人の著作権が存在していませんが、プログラミングコードは、特別なもの以外は著作権がありません。だから、本来、必要以上の内容は、公開しないようにしなければなりません。その限度は心得ているつもりです。この程度のコードは、私の感覚では、そんなに難しいものではないということです。
Wendy02さん、何度もアドバイスを下さり恐縮です。感謝致します
早速、秀丸マクロの書籍を購入して勉強を始めましたが、切り貼りだった知識が少しまとまってきた感じです。
どうもありがとうございました!
No.6
- 回答日時:
ご質問の中に、「リスト自動作成」という内容がありますが、
YouTube の「【Word】辞書引きと文字入力を自動化するマクロ 」は、誤解されているような気がします。自動化されている部分と、手動の部分の間に、省略されたものがあるようです。
画面でみているリストは、単にテキストファイルを開いただけで、それをコマンドで開きはするものの、マクロとして作っても、あまり意味がありません。
単語のリスト化も可能ですが、以下のようなスタイルのマクロは作っています。
使い方が、かなり特殊です。
ワードベーシックで、離れた二つの箇所を取得する方法
http://oshiete.goo.ne.jp/qa/5059719.html
で、目的は違いますが、リストを作る特殊なマクロです。コードとしては大したことありませんが、使った感じとしては、非常に複雑なものです。今回の目的に、そのままは使えません。
ところで、今のところ、試したことがありませんが、MS-Wordでは、PDICのDDEが呼び出せるようですから、ある程度、基本的な訳は呼び出せるように思っています。(Excelでは、呼び出せません)
翻訳用にするには、いろいろ工夫したほうがよいのですが、私は、思ったツールがありません。それから、Word VBAは、あくまでも、趣味の範囲のつもりです。
それと、YouTube の「カット&ペーストで高速・高品質の翻訳を」という内容は、特許翻訳のようですね。そのようなマクロでうまくいくものなのでしょうか?
Wendy02さん、ご回答ありがとうございます。
>YouTube の「【Word】辞書引きと文字入力を自動化するマクロ 」は、誤解されているような気がします。自動化されている部分と、手動の部分の間に、省略されたものがあるようです。
そうなんですね!
省略部分があるとは思いませんでした。
今回のことでWendy02さんのご回答と、その他に自分で調べていく中で、マクロについて関心が深くなりました。
先のコメントにも書いて下さったように、翻訳にはWordよりテキストの方がいい、と思うようにもなりました。
秀丸マクロを少しずつ勉強してみようと思います。
>それと、YouTube の「カット&ペーストで高速・高品質の翻訳を」という内容は、特許翻訳のようですね。そのようなマクロでうまくいくものなのでしょうか?
産業翻訳、特にマニュアルや特許の分野では、かなり使い勝手の良い作業方法だと思います。
カット&ペースト以外にももちろん手作業の部分が残るのですが。
いろいろと本当にありがとうございました!
No.5
- 回答日時:
'//続き
Sub ReplaceWordsList2()
Const MYCOLOR As Long = wdGray25 'グレー25
Dim FNames As Variant
Dim ComDlg As Object
Dim fNum As Integer
Dim rc As Long
Dim buf() As Variant
Dim textLine As String
Dim i As Long, j As Long, k As Long
Dim fName As String
Dim fn As Variant
Dim lpofn As OPENFILENAME
Dim MyPath As String
MyPath = ThisDocument.Path 'リストのパス
With lpofn
.hwndOwner = 0
.Flags = OFN_PATHMUSTEXIST Or _
OFN_FILEMUSTEXIST Or _
OFN_HIDEREADONLY
.lStructSize = Len(lpofn)
.lpstrTitle = "ファイルを開く"
.lpstrFilter = "Text File(*.txt)" & vbNullChar & "*.txt"
.lpstrFile = String(256, Chr(0))
.nMaxFile = 256
.lpstrInitialDir = MyPath
.nFilterIndex = 1
End With
rc = GetOpenFileName(lpofn)
If rc = 0 Then Exit Sub
fName = lpofn.lpstrFile
fName = Left(fName, InStr(fName, vbNullChar) - 1)
Options.DefaultHighlightColorIndex = MYCOLOR
fNum = FreeFile()
i = 0
Open fName For Input As #fNum
Do While Not EOF(fNum)
Line Input #fNum, textLine
If Len(textLine) > 1 Then
ReDim Preserve buf(i)
buf(i) = Split(textLine, vbTab)
i = i + 1
End If
Loop
Close fNum
If UBound(buf) > 0 Then
If UBound(buf(0)) < 1 Then MsgBox "正しいリストではありません。", vbExclamation: Exit Sub
For i = LBound(buf) To UBound(buf)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = buf(i)(0)
.Replacement.Text = buf(i)(1)
.Replacement.Highlight = MYCOLOR
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End If
Options.DefaultHighlightColorIndex = wdNoHighlight
End Sub
Wendy02さん、どうもありがとうございます。
せっかく作って戴いたのですが、プログラミングに関して初心者なので、「標準モジュールを挿入して~」というあたりが分かりません。
ネットで調べたのですが、そのレベルの作業は私にはまだ敷居が高いようです…。
とても残念です。そして申し訳ありません…。
これから少しずつ秀丸マクロを勉強して、既存マクロを自分用に作り変えられるようにしようと思います。
そうしたら、標準モジュールなども分かるようになるかもしれませんし。
いろいろ教えて戴いて、マクロの知識だけでなく今後の勉強に対する刺激にもなりました。
どうもありがとうございました。
No.4
- 回答日時:
>DAO360.DLL
今回は、これは、使っていません。なお、DAO360は、標準に入っているはずですが……。
原因は、「Comdlg32.ocx」というライブラリが入っていないからですが、Office では、2003 以降では、標準で、CommonDialog は入るはずです。エラーが出るというのは、Office のVesion は、それら以外かもしれません。
入っていないようなら、以下を読んでいれてもよいです。通常は、何かのツールを使うと入るものだったと思います。
VisualBasic6.0 SP5 ランタイムパッケージ
http://www.hmpage.jp/vb6rtest.htm
内容の説明は
http://support.microsoft.com/default.aspx?scid=k …
ただし、使わない方法で新たに書き直しました。OSとか、Office の範囲は多少広がります。
Win32APIは、大げさになってしまうので、最初使わなかったのです。Wordは、バージョンによって、挙動が違うので、思ったようにならないことも多いです。また、Word 2007 は、また、挙動が変わってきています。Word VBAは、底が浅いせいか、最近、Word VBAついて書いているブログやホームページも増えたようです。しょせん、Perl には敵わないように思っています。
前のお礼の部分:
今、書籍は、手元にはありませんが、大野悟さんの翔泳社のものだったはずです。あまり初歩的なのでほとんど読んでいません。それと、MS のプログラマーズガイドです。西上原裕明さんの本の内容は知っていますが、購入するまでには至りませんでした。
今は、97の頃とは、勢いが違い、Word VBAでめぼしいものはあまりありませんが、後は、
以下のサイトとか、
http://word.mvps.org/FAQs/index.htm
MSのリソースガイド
http://www.kayodeok.btinternet.co.uk/favorites/k …
ただ、日本語環境では、2byte 文字の関係があるので、それらは自分で勉強しなければなりません。
コードは、長いので、二つに分けました。つなげてお使いください。
'//新たに標準モジュールを挿入して、そこにいれたほうが良いです。モジュール上部から書く
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (lpofn As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_PATHMUSTEXIST = &H800
No.3
- 回答日時:
'//以下はマクロ(ThisDocument)
Private Const MYPATH As String = "C:\My Documents\WordDoc" 'リストを置く場所
'Private fNames as String
Sub ReplaceWordsList()
Const MYCOLOR As Long = wdGray25 'グレー25
Dim ComDlg As Object
Dim fNum As Integer
Dim buf() As Variant
Dim textLine As String
Dim i As Long, j As Long
Dim fName As String
OpenText:
Set ComDlg = CreateObject("MSComDlg.CommonDialog")
ComDlg.MaxFileSize = 256
ComDlg.InitDir = MYPATH
ComDlg.Filter = "テキスト ファイル (*.txt)|*.txt|"
ComDlg.ShowOpen
fName = ComDlg.FileName
If fName = "" Then
Exit Sub
Else
' fNames = "," & fName & fNames
' If InStr(3, fNames, "," & fName, vbTextCompare) > 3 Then
' If MsgBox("既に、処理済みファイルです。", vbExclamation + vbOKCancel, "Execution") = vbCancel Then Exit Sub
' GoTo OpenText
' End If
End If
Options.DefaultHighlightColorIndex = MYCOLOR
fNum = FreeFile()
i = 0
Open fName For Input As #fNum
Do While Not EOF(fNum)
Line Input #fNum, textLine
If Len(textLine) > 1 Then
ReDim Preserve buf(i)
buf(i) = Split(textLine, vbTab)
i = i + 1
End If
Loop
Close fNum
'//置換
If UBound(buf) > 0 Then
For i = LBound(buf) To UBound(buf)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = buf(i)(0)
.Replacement.Text = buf(i)(1)
.Replacement.Highlight = MYCOLOR
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End If
Options.DefaultHighlightColorIndex = wdNoHighlight
End Sub
Wendy02さん、コメントありがとうございます。
このマクロを試してみたのですが、
「実行時エラー429 ActiveXコンポーネントはオブジェクトを作成できません」
というメッセージが出て実行できません。
対処法として下記<対処法>を以下実行すると「......DAO360.DLLのDllRegisterServerは成功しました。」というメッセージが出るのですが、マクロを再度実行するとまた同じ「ActiveXコンポーネントは~」というメッセージが出ます。
<対処法>
[スタート] 中の[ファイル名を指定して実行] 内に、
regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL"
を入力して[OK]
デバックすると、マクロの「OpenText:」のすぐ下の
「Set ComDlg = CreateObject("MSComDlg.CommonDialog")」で止まっているようです。
もし思い当たることがおありでしたら、教えて戴けると有り難く思います。
No.2
- 回答日時:
>テキスト文書に対し、手作業では不可能な大量の単語を、自作の辞書を使って一括置換しています。
私は、何度か発表してきたつもりですが、いろんな人がいますから、そのリストが、Excelだったりワードのテーブルであったり、いろいろなリクエストがありますから、今回のリクエストは初めてになります。ありそうで、ここではありませんでした。
「辞書引きと文字入力を自動化するマクロ 」
は、問題は特にないと思います。コードを探してみましたが、公開しない理由は、サポートが面倒だからです。また、YouTube の動きは、途中の動作がどうやら省略しているような気がしましたので、マルチセレクト方式は辞めました。
あえて、翻訳の仕事をされているということで、関連のアドバイスをしますが、Wordは仕上げ用でしかないように思います。私個人は、Wordは、とても、翻訳作業で使えるとは思えないのです。
産業翻訳をされているなら、成田一(BuckEye)さんのSimplyTerms はご存じありませんか?後々、知りましたが、翻訳業界では偉い人のようで、彼のツールなどは、ご希望のものに該当すると思います。また、産業翻訳の世界では、何人かの方が個人用のツールを出しています。しかし、私個人はプライドもあって、氏のものを素直に使うという気にはなれませんが、以下のようなものがあります。
その代わり、VBAの世界では、私の知っているグループの人は現れることはないようです。私は、Perlは極めることが出来ませんでしたし、AWKには触り程度で、せいぜい、SEDだけなので、彼らから比較すると、MS系は、なんとなく気後れします。VBAの世界は、おんぶに抱っこで、出来るつもりになってしまいます。ちょっと出来るようになるとオメデタくなってしまう人が多いような気がします。私は、相変わらず、PDICと専門辞書のみです。切り分けツールの良いものがあれば、それで十分ですが、見つかりません。一行ずつ手動で読みながら切り分けます。文学ではないので、A4で、改行が2つしかないものもあります。(James Joyce は、もっとないようですが)
http://homepage2.nifty.com/buckeye/software/tran …
http://homepage2.nifty.com/buckeye/software/help …
検索・置換用のテキストファイルは、(間は、タブで区切る)拡張子は、必ず、.txt にしてください。
strand髪の毛
regrettable悲しむべき
chancellor大蔵大臣
beverage飲物
idol偶像
muse詩神
続きは、次のレスの中に書き込みます。
なお、書籍は、私個人は持っていますが、古いものでも、プレミアがついて安くありませんし、内容は、初歩的なものです。
Wendy02さん、早速のコメントをありがとうございます。
今はSimplyTermsを使っていて便利なソフトなので重宝しているのですが、水野さんのマクロにある2つの機能はテキスト文書用のものにはついておらず、でもまさに私の欲しい機能なので、これをぜひ試してみたかったのです。
購入された書籍というのは以下の3冊でしょうか?
今回のマクロのためだけでなく今後のために以下の購入を考えていたのですが、これらがあっても今回のマクロ作成には至らなさそうなのですね。
・実務翻訳者のためのWordマクロ 基礎の基礎 (水野さん著)
・自分で作るWordマクロ(1),(2)(水野さん著)
Wordマクロの本というと他に以下がありますが、ご存知でしょうか?
・Wordで実践 やさしくて役に立つ「マクロ」事?例集 2003/2002対応 (西上原裕明 著)
(他にもこのシリーズで何冊か出ています)
もう一つ戴いていたコメントにも後ほど返信します。
No.1
- 回答日時:
参考になりそうな処を紹介します。
Microsoft Word 文書のテキストを検索、置換する
http://www.microsoft.com/japan/technet/scriptcen …
あるWordの文章中に二重下線があります。その部分を探しマーカーを付け...
http://oshiete.goo.ne.jp/qa/5632086.html
Word VBAで文書内のUnicode文字を赤色にしたい
http://questionbox.jp.msn.com/qa3816807.html
Word 文書で強調表示されているテキストを検索し、書式を設定し直す方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …
検索語句を強調表示する方法
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
ご回答くださりありがとうございます。
今回の質問に伴っていろいろと調べたりアドバイスを戴いた結果、今後は秀丸マクロを中心に作業し、足りない機能をWordで探してみることにしようと思います。
ご紹介下さったサイトも参考にさせていただきます。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ワードで複数の文字を一括・連続置換するマクロ
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
PERSONAL..XLSを削...
-
Wordのマクロを有効にする方法
-
いつもお世話になります。 Web...
-
Word2007でファイルを開いたと...
-
Excelで追加した右クリックメニ...
-
Excelのマクロは管理者でないと...
-
ACCESS フォームの検索、表示...
-
■マクロの有効オプションとは何...
-
ワードを開くたびに「このプロ...
-
Word文書に必須入力項目を設けたい
-
Excelのシートを印刷不可(禁止...
-
ACCESS メニュー作成について
-
ワードを立ち上げると画面が小...
-
ロータス1,2,3がエクセルに駆逐...
-
wordをダウンロードしたらfront...
-
英語問題に付いての質問(高校...
-
なぜMS以外のオフィスは普及し...
-
Mozilla thunderbirdのソフトに...
-
ワードの入っていないPCで、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Access2010マクロ メッセージ...
-
Excelのシートを印刷不可(禁止...
-
Excelのマクロのショートカット...
-
Word文書に必須入力項目を設けたい
-
Wordのマクロを有効にする方法
-
Excelのマクロは管理者でないと...
-
VBAを禁止している会社って...
-
WORDのマクロでNG文字がある場...
-
画像判定の出来るマクロツール
-
今まで実行できていたマクロが...
-
Word2013: コピー、切り取り、...
-
Word2007でファイルを開いたと...
-
PERSONAL..XLSを削...
-
署名付きマクロについて・・・
-
EXCELのマクロを有効にする
-
MS-Projectの使い方(マクロを...
-
自分のマクロを「安全」なマク...
-
Word2000で原稿用紙を使いたい...
-
outlookでのBCC自動設定
おすすめ情報