- Tips, Tricks, and Answers. The VBA language used by Word's macros includes several powerful programming structures, including the Select Case structure, described in this tip. Updating Fields in Locked Forms Updating form fields in Word can be confusing, especially when the fields are locked in a form.
- Controlling Powerpoint from Excel using VBA. So far in this series about using VBA to control other Office applications, we have looked at the basics of controlling other office applications and specifically how to create macros to control Word from within Excel.
Active7 years, 1 month ago
Frequently the Word forums throw up some interesting exercises in macro programming. Some of the better examples that my fellow MVPs and I have come up with appear elsewhere in the Word pages on this site. This page offers a place to present some code examples that may have wider use, which you can adapt to your own requirements. In Word for the web, you have to step through such tasks manually. If you have Word, first click Open in Word to open your document in Word. Then follow the instructions for the desktop version of Word. When you run the macro in Word and save the document, you’ll see the results of the macro when you reopen your doc in Word for the web.
Summary: My company sends out letters to customers and wants me to write a macro to fill in different text form fields that have been set up in a word document since a very limited amount of things change between different letters sent out. I've done macros in excel, but this is my first encounter with ms-word macros
Problem: I've had a hard time finding effective, intelligent navigation through ms-word. I did find this article about moving in different directions which is really the same as the arrow keys. Was hoping to get some insight into the best way to navigate the word document. For example should I do a loop of moving to the right 1 space until I find something meaningful or is there a more effective way?
Question: Is it possible to store a specific form location in a variable or does ms-word have no coordinate system?
Thanks in advance!
Mike KelloggMike Kellogg74355 gold badges1212 silver badges3131 bronze badges
![Microsoft Microsoft](/uploads/1/2/4/9/124908033/742035828.png)
3 Answers
There are at least three types of Form Field in recent Windows version of Word - Content Controls, 'Legacy Form Fields' and ActiveX Form Fields. Assuming you are dealing with Legacy Form Fields, you should be able to index the FormFields collection using the bookmark name, then use, e.g.
user1379931
To work with the content controls, you have to ensure that you have set the
Title
of the control. You can also set the Tag
as well if you want. See SnapshotAnd then you can use this code to update the content control or retrieve it's value
When you run the code, this is how it looks
To get the control's text you can use
Siddharth RoutSiddharth RoutDebug.Print cc.Range.text
123k1515 gold badges163163 silver badges218218 bronze badges
You should be able to create bookmarks at various places in the document that you need to go to. In modern Word, this is on the 'Insert' tab, in the 'Links' group. Then you can access the bookmarks from VBA and insert text into them with this sort of code:
This MVP site has more data on the technique. Also, MSDN has some data on bookmark objects.
Word 2016 Vba Examples
dsolimanodsolimano7,69233 gold badges4141 silver badges5757 bronze badges
Not the answer you're looking for? Browse other questions tagged vbams-wordword-vba or ask your own question.
Active25 days ago
I have to write some documents that will include source code examples. Some of the examples will be written from the IDE, and others would be written in place. My examples are primarily in Java.
As someone who is used to LaTeX, doing this in Word is extremely painful. However, I am bound to Word for this. The only options I have seen are:
- Write or copy into the document,then use a fixed type font, arrangeformatting and hope that Word didn'tuppercase stuff for you. Needless tosay, this looks like crap.
- Copy and paste screenshots of sourcecode from the IDE. At least I keepcolors. However, if I change my fontsize, I'm screwed. I'm also screwedacross page boundaries. And let'sadmit it, Word is not great atmanaging multiple images on adocument.
- Write HTML (not really an optionhere)
Is there some better (and ideally portable) way to do this? Is there at least some sort of verbatim style similar to the LaTeX environment? Is there at least some pretty printer that I could copy-and-paste as RTF?
Todd Main28.2k99 gold badges6969 silver badges135135 bronze badges
UriUri68.6k4444 gold badges205205 silver badges307307 bronze badges
13 Answers
I absolutely hate and despise working for free for Microsoft, given how after all those billions of dollars they STILL do not to have proper guides about stuff like this with screenshots on their damn website.
Anyways, here is a quick guide in Word 2010, using Notepad++ for syntax coloring, and a TextBox which can be captioned:
- Choose Insert / Text Box / Simple Text Box
- A default text box is inserted
- Switch to NPP, choose the language for syntax coloring of your code, go to Plugins / NPPExport / Copy RTF to clipboard
- Switch back to word, and paste into the text box - it may be too small ...
- ... so you may have to change its size
- Having selected the text box, right-click on it, then choose Insert Caption ...
- In the Caption menu, if you don't have one already, click New Label, and set the new label to 'Code', click OK ...
- ... then in the Caption dialog, switch the label to Code, and hit OK
- Finally, type your caption in the newly created caption box
21.7k2828 gold badges160160 silver badges217217 bronze badges
You need to define a style in your Word document and use that for source code. I usually have a style called 'Code' which has a monospaced font in a small point size, fixed size tabs, single line spacing, no before/after paragraph spacing, etc. You only need to define this style once and then reuse it. You paste in your source code and apply the 'Code' style to it.
Note that some editors (e.g. Xcode on the Mac) add RTF as well as text to the clipboard when copying/pasting between applications - Word recognises RTF and helpfully retains the formatting, syntax colouring, etc.
Source code in Xcode:
Copied and pasted to Word:
(Note: it's a good idea to disable spell-checking in your 'Code' style in Word.)
Paul RPaul R181k2525 gold badges316316 silver badges474474 bronze badges
I recently came across this post and found some useful hints. However, I ended up using an entirely different approach which suited my needs. I am sharing the approach and my reasoning of why I chose this approach. The post is longer than I would have liked, but I believe screenshots are always helpful. Hopefully, the answer would be useful to someone.
My requirements were the following:
- Add code snippets to a word document, with syntax highlighting for easier visibility and differentiation of code and other text.
- Code snippet shall be inline with other text.
- Code snippet shall break across pages smoothly without any extra effort.
- Code snippet shall have a nice border.
- Code snippet shall have spell-check disabled.
My Approach is as listed below:
- Use external tool to achieve syntax highlighting requirement 1 above. One could use notepad plus plus as described above. However, I use the tool present here - http://www.planetb.ca/syntax-highlight-word. This gives me the option to use line number, as well as very nice syntax highlighting. Steps to achieve syntax highlighting are listed below:
- Open the website provided above in chrome and Copy the code snippet in the text area. I will be using a sample XML to demonstrate this (XML sample from here - http://www.service-architecture.com/articles/object-oriented-databases/xml_file_for_complex_data.html).
- Select the language from drop down menu.
- Click 'Show Highlighted' button. It will open a new tab, with syntax-highlighted code snippet, in this case the XML sample we chose. See image below for example.
- To Turn off the line numbers, inspect the page in chrome. Then, under styles, deselect the 'margin' property in '.dp-highlighter ol', as shown in the image below. If you want to keep the line numbers, go to next step.
- Select the syntax-highlighted code and click copy. Now your code is ready to be pasted into Microsoft word.Thanks to this blog for providing this information - http://idratherbewriting.com/2013/04/04/adding-syntax-highlighting-to-code-examples-online-and-in-microsoft-word/.
- To achieve requirements 2, 3 and 4 above, use table in Microsoft word, to insert the code snippet. Steps are listed below:
- Insert a table with single column.
- Paste the copied text from step 1. in the table column. I have kept the line numbers to show how well this works with Microsoft word.
- Apply border, as you like. I have used size 1pt. Resulting Microsoft word snippet will appear as shown in screenshot below. Note how nicely it breaks across the page - NO extra effort needed to manage this, which you would face if inserting 'OpenDocument Text' object or if using 'Simple TextBox'.
- To achieve requirement 5, follow the steps below:
- Select the entire table or the text.
- Go to Review tab. Under Language, choose 'Proofing Language'. A new pop-up will be presented.
- Select 'Do not check spelling or grammar'. Then, click OK.
- Resulting text has spell-check disabled. Final result is shown in the image below and meets all the requirements.
Please provide if you have any feedback or improvements or run into any issues with the approach.
abhishekabhishek
It kind of depends on the IDE. Both Visual Studio and Eclipse, for example, will allow you to copy as RTF and paste into Word, keeping all your formatting.
Notepad++ has a plugin called 'NppExport' (comes pre-installed) that allows you to copy to RTF, though I don't care much for Notepad++'s syntax highlighting (it'd definitely be passable though). What it does do is support dozens of languages, whereas the aforementioned IDEs are limited to a handful each (without other plug-ins).
CᴏʀʏCᴏʀʏ84.9k1717 gold badges145145 silver badges176176 bronze badges
This is related to this answer: https://stackoverflow.com/a/2653406/931265Creating an object solved all of my problems.
Insert > Object > Opendocument Text
This will open a document window, paste your text, format it how you want, and close it.
The result is a figure. Right click the object, and select 'add a caption'.
![Microsoft Word Vba Examples Microsoft Word Vba Examples](/uploads/1/2/4/9/124908033/156608218.jpg)
You can now make cross references, create a table of figures.
Community♦
rickfoosusarickfoosusa
On a Mac I find this solution with vim to be wonderful:
qedqed11k1313 gold badges7777 silver badges136136 bronze badges
You can use Open Xml Sdk for this. If you have the code in html with color and formatting. You can use altchunks to add it to the word documents.Refer this post Add HTML String to OpenXML (*.docx) DocumentHope this helps!
Community♦
Mohamed AlikhanMohamed Alikhan
This is what i did.
End results :
Community♦
USer22999299USer229992991,81344 gold badges2424 silver badges5757 bronze badges
You can using Plugin Syntax Highlight in Ms.Word https://store.office.com/syntax-highlighter-WA104315019.aspx?assetid=WA104315019 . i follow that step and it's work
ynzynz
Word Macro Samples
In Word, it is possible to paste code that uses color to differentiate comments from code using 'Paste Keep Source Formatting.' However, if you use the pasted code to create a new style, Word automatically strips the color coded text and changes them to be black (or whatever the auto default color is). Since applying a style is the best way to ensure compliance with document format requirements, Word is not very useful for documenting software programs. Unfortunately, I don't recall Open Office being any better. The best work-around is to use the default simple text box.
user10128757user10128757
I have tried all your methods, but they didn't work for me, in fact I have created an easier method using MS Word Tables.
Pros:
- More beautiful
- Easier to manage & more consistent
- Are less prone to problems
- No need for external plugins or MS Word micro coding.
- Easier to handle by simple users (such as myself).
Cons:It will not maintain code colouring although someone could improve my trick.
Steps:
- Insert a 3x3 table, in my case I always make the total width of the table equals the free page's width (3 rows minimum to test the tables style).
- Use invisible borders ('No Borders' option), and activate 'View Gridlines' option. it should have this aspect.Be ware that those lines are for you to see the table's grid, and the will not be printed.
- Make the adjustments to cells' spacing and columns' width to get the aspect you like. (You will have to get in 'Table Properties' for fine tuning).
- Create a 'Paragraph Style' with the name of 'Code' just for your code snippets (check https://stackoverflow.com/a/25092977/8533804 to get the idea, you don't have to follow all of it)
- Create another 'Paragraph Style' with the name of 'Code_numberline' that will be based upon the previous created style.
- In the newly created 'Code_numberline' add the numbering style that you like (this will automate line numbering).
- Apply 'Code_numberline' to the first column, and 'Code' to the 3 column.
- Add a fill in the middle column.
- Save that table style and enjoy!
Nader BelalNader Belal
Microsoft Word Vba Examples
If you are still looking for an simple way to add code snippets.
you can easily go to [Insert] > [Object] > [Opendocument Text] > paste your code > Save and Close.
You could also put this into a macro and add it to your easy access bar.
notes:
- This will only take up to one page of code.
- Your Code will not be autocorrected.
- You can only interact with it by double-clicking it.
MeatyfleshMeatyflesh
There is an easy way if you want simple code formatting.
- Open word> Insert tab> click on 'Get Add-ins'
- search for 'Content mixer' 3.click on 'Add'
Then content mixer add will open automatically and you can copy paste your code in there and click on 'Insert' to insert it in word doc.
Hitesh BishtHitesh Bisht