logo
search
VBA & Macro Problems

How to Fix VBA Errors When Replacing Word Underscores with Document Text

Phi Hung VoPhi Hung Vo Oct 15, 2026 869 views

Question details

The user encounters property-assignment and argument errors when running a VBA macro designed to replace underscores in an active Word document with specific text lines from a secondary source document.

How to Fix VBA Errors When Replacing Word Underscores with Document Text
Product
Word
Device & OS
not provided
Scenario
Automating the replacement of underscores in a primary Word document using corresponding text lines fetched from a separate source document.
Observed behavior
The generated VBA code fails to execute successfully, returning argument or property-assignment errors instead of replacing the target underscores.
Before you start

Ensure you have backed up both your primary document and the source text document, and verify that the file path to the source document is completely accurate in your script before running the macro.

Solution 1Recommended

Correct the VBA Code Using Explicit Document and Range Objects

Rewriting the macro to explicitly declare and manage Document and Range objects prevents assignment errors and ensures both files are handled cleanly.

Many VBA errors occur because the code relies on implicit active selections rather than explicitly defined objects. By declaring specific variables for both documents and handling error exits properly, you can prevent runtime failures.

1
Open the VBA Editor

Press Alt + F11 in your Word document to open the Visual Basic for Applications (VBA) editor, and locate your current macro module.

2
Declare Explicit Objects

Define distinct Document and Range variables for both your active document and the source document (e.g., 'Dim docActive As Document', 'Dim docSource As Document') rather than relying on the active selection.

3
Filter Invalid Characters

Avoid using unreliable properties like Characters.Count to calculate underscores. Instead, use a structured Find loop to locate each underscore individually.

4
Remove Paragraph Marks from Source

When extracting a line from the source document, explicitly remove the trailing paragraph mark from the Range (e.g., using MoveEnd) before inserting it into the active document.

5
Implement Error Handling

Add an 'On Error GoTo' statement to catch unexpected issues. Create an exit routine that ensures the source document is safely closed and screen updating is restored ('Application.ScreenUpdating = True').

Correct the VBA Code Using Explicit Document and Range Objects
Macro Security: Ensure that your macro security settings allow the script to execute. You may need to enable macros temporarily in the Trust Center settings.
Automate Tasks with WPS Office

Seamlessly Run and Edit VBA Macros in WPS Writer

WPS Writer offers robust support for VBA macros, allowing you to easily automate complex document formatting and text replacements. Debug and execute your code safely within a streamlined, user-friendly interface.

  1. 1. Open WPS Writer: Launch WPS Writer and open the document where you need to perform the text replacements.
  2. 2. Access Developer Tools: Navigate to the 'Tools' tab on the top ribbon and click on 'Developer' to access macro features.
  3. 3. Paste Your Code: Click on 'Macros', create a new macro, and paste your corrected VBA script using explicit Document and Range objects.
  4. 4. Run the Macro: Save the script and click 'Run' to instantly replace the underscores with your source document text.
Highly compatible with Microsoft Word VBA macrosBuilt-in developer tools for code editing and debuggingProcess multi-document text replacements efficientlyLightweight application with fast execution speeds
microsoft office alternative - wps office

Frequently Asked Questions

Why does my VBA macro throw a property-assignment error when replacing text?

Property-assignment errors usually occur when the macro tries to assign a value to an object that isn't explicitly defined or when copying text that includes incompatible hidden formatting, such as paragraph marks.

How do I remove a paragraph mark from a copied string in VBA?

You can remove the paragraph mark by adjusting the source Range's end position before copying it. For example, use 'rngSource.MoveEnd Unit:=wdCharacter, Count:=-1' to exclude the final paragraph mark.

Why is Characters.Count unreliable for finding underscores?

Characters.Count evaluates the entire document length and may cause overflow errors or inaccurate counts if the document contains complex formatting or hidden characters. A Find.Execute loop is much safer for locating specific characters like underscores.

How can I ensure my source document closes if the macro crashes?

Use an error-handling block in your VBA code (e.g., On Error GoTo ErrorHandler). At the end of the script, create an exit label that explicitly includes 'docSource.Close SaveChanges:=False', ensuring the file is released even if the script fails midway.