A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
質問には書かれていないのですが、本当は、複数のワードのドキュメントの文字を置換するものだと思います。一応、ご質問のままに、Excel用マクロにしましたが、置換データそのものは、ひとかたまりなのですから、一度Excelのファイルを読めば、後は、Excelを閉じてしまっても使えます。本来は、Wordマクロにすれば良かったかもしれません。
Excel側からWordを呼び出した場合は、エラーが発生したら、タスクマネージャーを立ち上げて、プロセスの中から、Word.Exe があるか確認して、あれば終了させてください。
-------------------------------------------
現在は、Document ファイルは、ひとつのみ
現在は、ワードのデフォルトパスにしています。
wdPath = wdApp.Options.DefaultFilePath(0) & "\" 'wdDocumentsPath
シートは、アクティブシート
シートのデータは、A列とB列 1行目から入れること。
'-------------------------------------------
'Option Explicit
Private wdApp As Object 'Word.Application 'Object
Private wdDoc As Object 'Word.Document 'Object
Sub ReplaceWordText()
Dim RowsCount As Long
Dim Datas() As String
Dim i As Long, j As Long
Dim wdPath As String
Dim FileNames As String
On Error GoTo EndLine
'ファイル名
FileNames = "Test2.doc"
With ActiveSheet
RowsCount = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim Datas(1, RowsCount - 1)
For i = 1 To RowsCount
If Len(.Cells(i, 1).Value) > 0 Then
Datas(0, i - 1) = .Cells(i, 1).Value
Datas(1, i - 1) = .Cells(i, 2).Value
End If
Next i
End With
'データがない場合、マクロを離脱
If Datas(0, 0) = "" Then Exit Sub
'ワードのオートメーションの取得
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
On Error GoTo 0
If wdApp Is Nothing Then
Set wdApp = CreateObject("Word.Application")
End If
wdApp.Visible = True
'ワードのデフォルトパス
wdPath = wdApp.Options.DefaultFilePath(0) & "\" 'wdDocumentsPath
'ファイル名
If Dir(wdPath & FileNames) <> "" Then
Set wdDoc = wdApp.Documents.Open(wdPath & FileNames)
For j = 0 To RowsCount - 1
Call CountReplacements(Datas(0, j), Datas(1, j))
Next j
wdDoc.Save
wdDoc.Close False
Else
MsgBox FileNames & "が見つかりません。", vbExclamation
End If
wdApp.Quit
EndLine:
Set wdApp = Nothing
If Err.Number = 0 Then
MsgBox "正常終了しました。", vbInformation
Else
MsgBox Err.Number & " : " & Err.Description, vbExclamation
End If
End Sub
Private Sub CountReplacements(ByVal sSearchText As String, ByVal sReplaceText As String)
With wdApp
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = sSearchText
.Replacement.Text = sReplaceText
.Forward = True
.MatchFuzzy = True
.MatchWholeWord = False '部分置換
.MatchCase = True
.MatchWildcards = False
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.Execute , , , , , , , , , , 2 'wdReplaceAll
End With
End With
End Sub
回答ありがとうございました!
使い方ですが、置換えしたいワードのドキュメントを開き、
マクロと置換えリストが入っているエクセルを開き、そのマクロを実行すればよろしいでしょうか?
>置換データそのものは、ひとかたまりなのですから、一度Excelのファイルを読めば、後は、Excelを閉じてしまっても使えます。
この文章がよくわからなかったのですが、
もう一度ご説明いただければ幸いです。
No.2
- 回答日時:
こんにちは。
不明瞭な書き方ですみません。
>マクロと置換えリストが入っているエクセルを開き、そのマクロを実行すればよろしいでしょうか?
そのとおりです。なぜ、いろいろな注釈を入れたかというと、Excel側から実行すると、エラーかせ発見しにくく、スピードも遅いのではないか、という心配からです。
>>置換データそのものは、ひとかたまりなのですから、一度Excelのファイルを読めば、後は、Excelを閉じてしまっても使えます。
要するに、Word側から、実行出来れば、上記でも書いたような不具合の問題が減るのではないか、ということです。
Excel側からのマクロの実行が必須要件なら、これは無視しても構いません。ただ、Wordのドキュメントの別表で正誤リストを作るのが楽ではないかと思いました。
ところで、こういう話の前に、Excelの標準モジュールに置いた後、ご自分の環境に合わせた設定の仕方などは、分かっていらっしゃいますか?
Wordの標準フォルダとファイル名は、ご自身で設定してくださるようにお願いします。
No.3
- 回答日時:
補足:
以前、このようなものを作っています。
ワードベーシックで、離れた二つの箇所の属性を取得する方法
http://oshiete1.goo.ne.jp/qa5059719.html
ここで、私が書いたものは、Wordの中で、リストを作るものです。
#4の画像が、文章の正誤リストのようなものです。それを別のDocument に反映しています。
ただ、気持ち的にのらないと、なかなか、そのようなコードは書けませんが。
何度も回答いただきありがとうございました。
下の回答にもお礼を書いたのですが、アップされておりませんで失礼しました。
自分の環境にあった設定の仕方もわからないのですが、
今日、会社で試してみました。
PCのデスクトップに貼ったファイルで文書名を文書2にしてみたのですが、文書2がみつかりませんというエラーになってしまいました。
どうしたらよろしいでしょうか?
エクセルのマクロにしたいのは、理由がありまして、業務上、同じエクセルの置換えリストを使ってワードとパワーポイントとエクセルの一括置換えをしたいからです。
よろしくお願いします。
No.4
- 回答日時:
>>ワードベーシックで、離れた二つの箇所の属性を取得する方法
>どうしたらよろしいでしょうか?
これは、あくまでも、そうした例を挙げたものです。Wordの表の作成とその語彙の対比を作るサンプルです。今回のご質問よりも、はるかに複雑な内容で、その元のご質問者さんの環境にあった造りですから、その状況が読み取れていない状況では使いこなせないと思います。
>エクセルのマクロにしたいのは、理由がありまして、業務上、同じエクセルの置換えリストを使ってワードとパワーポイントとエクセルの一括置換えをしたいからです。
私が指摘していたのは、訂正する側のWordのファイルのOpen と Save が、同じWordから行う場合と、Excelから行うのでは、トラブルや処理スピードが違うということだけです。Excelで書こうが、Wordで書こうが、本質的には変わりありません。単に経験的なアドバイスとして書いたまでです。ご質問者んが、あくまで、こうしたいという主張を違えてまで、書いているわけではありません。すでにコードを作ってありますから、それをどうするか、続行するか、やめるかは、ご自身がお決めになってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Word(ワード) LibreOfficeで数年保存しているデータの変更作業 4 2022/07/08 17:15
- Excel(エクセル) エクセルVBA Msgboxでの変数の活用 4 2023/07/23 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Word(ワード) ワードフォント 一括置換の方法 4 2022/12/31 00:27
- Excel(エクセル) エクセルのマクロ設定 1 2023/04/05 19:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
サクラエディタ・マクロ → VSCo...
-
ExcelVBAでPDFを閉じるソース
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルに張り付けた写真のフ...
-
エクセルのマクロについて教え...
-
ユーザーフォームを起動しなが...
-
エクセルのマクロについて教え...
-
VBA アドインについて お詳しい...
-
VBA初心者 Ctrl+での操作、ボタ...
-
特定文字のある行の前に空白行...
-
2つのマクロでチェックボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報