![]() |
#1
|
|||
|
|||
![]() In the below table there are some untranslated words (native text) and i need to replace this strings from another document manually. Can any one automate this work by VBA.. While running the code it will ask for the source file and next replacing text document and those are to be replaced on the exactly matched native text and it shpuld be colored in yellow color, after replacing we should msg as “Successfully replaced on the exactly matched strings” and finally saved as in RTF format with the same source file name. Is it possible to automate this and please help me in this regards and am thankful to you.... Source file ".docx " ".rtf" Relacing file ".docx " ".rtf" Output file ".rtf" Am attaching attachments please look into this and do the needful.... |
#2
|
||||
|
||||
![]()
For some code to get you started, try:
Code:
Sub AutoTranslation() Application.ScreenUpdating = False Options.DefaultHighlightColorIndex = wdYellow Dim DocSrc As Document, DocTgt As Document, Tbl As Table, r As Long With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker) .Title = "Select the source document containing the Find/Replace Table" .AllowMultiSelect = False If .Show = -1 Then Set DocSrc = Documents.Open(.SelectedItems(1), ReadOnly:=True, AddToRecentFiles:=False) Else MsgBox "No source file selected. Exiting", vbExclamation Exit Sub End If End With With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker) .Title = "Select the target document to be updated" .AllowMultiSelect = False If .Show = -1 Then Set DocTgt = Documents.Open(.SelectedItems(1), ReadOnly:=False, AddToRecentFiles:=True) Else MsgBox "No target file selected. Exiting", vbExclamation DocSrc.Close SaveChanges:=False Set DocSrc = Nothing Exit Sub End If End With Set Tbl = DocSrc.Tables(1) With DocTgt With .Range.Find .ClearFormatting .Replacement.ClearFormatting .MatchWholeWord = True .MatchCase = True 'Process each word from the reference document's first table. For r = 2 To Tbl.Rows.Count .Text = Split(Tbl.Cell(r, 2).Range.Text, vbCr)(0) .Replacement.Text = Split(Tbl.Cell(r, 3).Range.Text, vbCr)(0) .Execute Replace:=wdReplaceAll Next End With .SaveAs2 FileName:=Split(.FullName, ".doc")(0) & ".rtf", Fileformat:=wdFormatRTF, AddToRecentFiles:=False End With DocSrc.Close SaveChanges:=False Set Tbl = Nothing: Set DocSrc = Nothing: Set DocTgt = Nothing Options.DefaultHighlightColorIndex = wdNoHighlight Application.ScreenUpdating = True MsgBox "Successfully replaced on the exactly matched strings" End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
![]()
It didn't throw an error when I tried it, but I'm not sure that I'm setting things up correctly or that it's doing what I'm was hoping.
I set up one file with the two column table. In column 1 I had three bracketed variables (e.g., [Test 1], [Test 2], etc.). In column 2, I put the values I want to put in place of [Test 1], [Test 2], etc. (e.g., Test 4 and Test 5). Then in the target document I don't have a table. It's just a regular document with the bracketed variables (e.g., [Test 1]). I was expecting the macro to replace [Test 1] with Test 4. But this didn't happen. It finished and and [Test 1] was still there, as were the other original bracketed variables. Do I have things set up wrong? KS |
#4
|
||||
|
||||
![]()
Done correctly, it works. Without actually seeing your two documents, I can't be sure what it is you've done.
If, as I suspect, your table is as per the OP's 'Fixed version (replacing document).docx ' attachment (which isn't actually the fixed version), you need to change: Code:
.Text = Split(Tbl.Cell(r, 2).Range.Text, vbCr)(0) .Replacement.Text = Split(Tbl.Cell(r, 3).Range.Text, vbCr)(0) Code:
.Text = Split(Tbl.Cell(r, 1).Range.Text, vbCr)(0) .Replacement.Text = Split(Tbl.Cell(r, 2).Range.Text, vbCr)(0)
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
![]()
Here's what the source document looks like:
![]() |
#6
|
|||
|
|||
![]()
Here's what the target document looks like:
![]() |
#7
|
||||
|
||||
![]()
The modified code works just fine with documents constructed along those lines and selected at the appropriate points when the macro runs.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#8
|
|||
|
|||
![]()
Hi,
Sorry for delay in responding to this job, this code works like charm and your work is highly appreciated and save my efficiency and productivity and small correction required to this code for replaced string it should get bold and any light font color to be added, so that we can easily identified the replaced strings in document. Thanks a lot...... |
![]() |
Tags |
word replacing |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
wardw | Word | 7 | 05-07-2018 09:13 AM |
![]() |
Amitti | Word VBA | 2 | 04-10-2017 07:35 PM |
How to find all string within string. | PRA007 | Word VBA | 18 | 02-12-2016 08:11 PM |
![]() |
omahadivision | Excel Programming | 12 | 11-23-2013 12:10 PM |
Replacing text string within document, it's not retaining formatting | livemusic | Word | 4 | 02-25-2013 12:33 AM |