Looping through table rows and replacing key terms in a word template Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Select and Paste Rows in a Different LocationStandard Methods in VBABuilding a set of flags based on data from a source workbookAssigning entire column of data to specific column of an array in VBAMaking a report from Payroll Details Part IVPrint For loop to immediate windowFiltering rows in Excel according to words, dates, and ID numbersPull together information from many workbooks based on headersAbstracting and unit testing lookups in Excel tableSpeed up VBA with 138k rows and ~330 sheet creation
Hangman Game with C++
How often does castling occur in grandmaster games?
As a beginner, should I get a Squier Strat with a SSS config or a HSS?
Do I really need to have a message in a novel to appeal to readers?
How to tell that you are a giant?
Trademark violation for app?
Can anything be seen from the center of the Boötes void? How dark would it be?
Why is Nikon 1.4g better when Nikon 1.8g is sharper?
What would you call this weird metallic apparatus that allows you to lift people?
Selecting user stories during sprint planning
How come Sam didn't become Lord of Horn Hill?
Has negative voting ever been officially implemented in elections, or seriously proposed, or even studied?
Do wooden building fires get hotter than 600°C?
Time to Settle Down!
Illegal assignment from sObject to Id
Disembodied hand growing fangs
Chebyshev inequality in terms of RMS
Is CEO the "profession" with the most psychopaths?
Is grep documentation about ignoring case wrong, since it doesn't ignore case in filenames?
Question about debouncing - delay of state change
Why wasn't DOSKEY integrated with COMMAND.COM?
How can I reduce the gap between left and right of cdot with a macro?
Denied boarding although I have proper visa and documentation. To whom should I make a complaint?
How does the math work when buying airline miles?
Looping through table rows and replacing key terms in a word template
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Select and Paste Rows in a Different LocationStandard Methods in VBABuilding a set of flags based on data from a source workbookAssigning entire column of data to specific column of an array in VBAMaking a report from Payroll Details Part IVPrint For loop to immediate windowFiltering rows in Excel according to words, dates, and ID numbersPull together information from many workbooks based on headersAbstracting and unit testing lookups in Excel tableSpeed up VBA with 138k rows and ~330 sheet creation
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
Here is my code for a sub which does the following:
read header of a table into an array
reads first row of said table into a 2nd array
loops through the first array and replaces the marked keywords
<keyword>
in a word template file (.dotx) with the data row cell (includes header and body)
This sub is then called by another sub specifying both table rows and the template file.
Now since I am not a programmer by profession I am pretty sure that this is far from the best way to do it efficiently, so any comments or improvements are much appreciated.
Sub ReplacefromRange(header As Range, DataRow As Range, TemplateFile)
Dim heading() As String
Dim data() As String
Dim i As Integer
Dim x As Variant
' Creates a first array that takes "header" as argument
i = -1
For Each x In header.Cells
i = i + 1
ReDim Preserve heading(i) As String
heading(i) = x.Value
Next x
' Creates second array that takes "DataRow" as argument
i = -1
For Each x In DataRow.Cells
i = i + 1
ReDim Preserve data(i) As String
data(i) = x.Value
Next x
' Uses a for each loop through heading() to find and replace individual entries in the "TemplateFile" argument
i = 0
For Each x In heading()
With TemplateFile 'looks at the word document body
.Application.Selection.Find.Text = "<" & heading(i) & ">"
.Application.Selection.Find.Execute
.Application.Selection = data(i)
.Application.Selection.EndOf
' the part below looks at the header content
.Sections(1).headers(wdHeaderFooterPrimary).Range.Find.Execute _
FindText:="<" & heading(i) & ">", Format:=False, ReplaceWith:=data(i), Replace:=wdReplaceAll, Wrap:=wdFindContinue
i = i + 1
End With
Next x
End Sub
vba excel ms-word
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
Here is my code for a sub which does the following:
read header of a table into an array
reads first row of said table into a 2nd array
loops through the first array and replaces the marked keywords
<keyword>
in a word template file (.dotx) with the data row cell (includes header and body)
This sub is then called by another sub specifying both table rows and the template file.
Now since I am not a programmer by profession I am pretty sure that this is far from the best way to do it efficiently, so any comments or improvements are much appreciated.
Sub ReplacefromRange(header As Range, DataRow As Range, TemplateFile)
Dim heading() As String
Dim data() As String
Dim i As Integer
Dim x As Variant
' Creates a first array that takes "header" as argument
i = -1
For Each x In header.Cells
i = i + 1
ReDim Preserve heading(i) As String
heading(i) = x.Value
Next x
' Creates second array that takes "DataRow" as argument
i = -1
For Each x In DataRow.Cells
i = i + 1
ReDim Preserve data(i) As String
data(i) = x.Value
Next x
' Uses a for each loop through heading() to find and replace individual entries in the "TemplateFile" argument
i = 0
For Each x In heading()
With TemplateFile 'looks at the word document body
.Application.Selection.Find.Text = "<" & heading(i) & ">"
.Application.Selection.Find.Execute
.Application.Selection = data(i)
.Application.Selection.EndOf
' the part below looks at the header content
.Sections(1).headers(wdHeaderFooterPrimary).Range.Find.Execute _
FindText:="<" & heading(i) & ">", Format:=False, ReplaceWith:=data(i), Replace:=wdReplaceAll, Wrap:=wdFindContinue
i = i + 1
End With
Next x
End Sub
vba excel ms-word
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago
add a comment |
$begingroup$
Here is my code for a sub which does the following:
read header of a table into an array
reads first row of said table into a 2nd array
loops through the first array and replaces the marked keywords
<keyword>
in a word template file (.dotx) with the data row cell (includes header and body)
This sub is then called by another sub specifying both table rows and the template file.
Now since I am not a programmer by profession I am pretty sure that this is far from the best way to do it efficiently, so any comments or improvements are much appreciated.
Sub ReplacefromRange(header As Range, DataRow As Range, TemplateFile)
Dim heading() As String
Dim data() As String
Dim i As Integer
Dim x As Variant
' Creates a first array that takes "header" as argument
i = -1
For Each x In header.Cells
i = i + 1
ReDim Preserve heading(i) As String
heading(i) = x.Value
Next x
' Creates second array that takes "DataRow" as argument
i = -1
For Each x In DataRow.Cells
i = i + 1
ReDim Preserve data(i) As String
data(i) = x.Value
Next x
' Uses a for each loop through heading() to find and replace individual entries in the "TemplateFile" argument
i = 0
For Each x In heading()
With TemplateFile 'looks at the word document body
.Application.Selection.Find.Text = "<" & heading(i) & ">"
.Application.Selection.Find.Execute
.Application.Selection = data(i)
.Application.Selection.EndOf
' the part below looks at the header content
.Sections(1).headers(wdHeaderFooterPrimary).Range.Find.Execute _
FindText:="<" & heading(i) & ">", Format:=False, ReplaceWith:=data(i), Replace:=wdReplaceAll, Wrap:=wdFindContinue
i = i + 1
End With
Next x
End Sub
vba excel ms-word
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
Here is my code for a sub which does the following:
read header of a table into an array
reads first row of said table into a 2nd array
loops through the first array and replaces the marked keywords
<keyword>
in a word template file (.dotx) with the data row cell (includes header and body)
This sub is then called by another sub specifying both table rows and the template file.
Now since I am not a programmer by profession I am pretty sure that this is far from the best way to do it efficiently, so any comments or improvements are much appreciated.
Sub ReplacefromRange(header As Range, DataRow As Range, TemplateFile)
Dim heading() As String
Dim data() As String
Dim i As Integer
Dim x As Variant
' Creates a first array that takes "header" as argument
i = -1
For Each x In header.Cells
i = i + 1
ReDim Preserve heading(i) As String
heading(i) = x.Value
Next x
' Creates second array that takes "DataRow" as argument
i = -1
For Each x In DataRow.Cells
i = i + 1
ReDim Preserve data(i) As String
data(i) = x.Value
Next x
' Uses a for each loop through heading() to find and replace individual entries in the "TemplateFile" argument
i = 0
For Each x In heading()
With TemplateFile 'looks at the word document body
.Application.Selection.Find.Text = "<" & heading(i) & ">"
.Application.Selection.Find.Execute
.Application.Selection = data(i)
.Application.Selection.EndOf
' the part below looks at the header content
.Sections(1).headers(wdHeaderFooterPrimary).Range.Find.Execute _
FindText:="<" & heading(i) & ">", Format:=False, ReplaceWith:=data(i), Replace:=wdReplaceAll, Wrap:=wdFindContinue
i = i + 1
End With
Next x
End Sub
vba excel ms-word
vba excel ms-word
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 2 mins ago


Jamal♦
30.6k11121227
30.6k11121227
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 19 hours ago


NickNick
13
13
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Nick is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago
add a comment |
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Nick is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217651%2flooping-through-table-rows-and-replacing-key-terms-in-a-word-template%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Nick is a new contributor. Be nice, and check out our Code of Conduct.
Nick is a new contributor. Be nice, and check out our Code of Conduct.
Nick is a new contributor. Be nice, and check out our Code of Conduct.
Nick is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217651%2flooping-through-table-rows-and-replacing-key-terms-in-a-word-template%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Since you're not a professional programmer, this is an excellent start and good job for developing a working solution! I highly recommend the Rubberduck tool that will give you very helpful guidance in reviewing your code within your development environment
$endgroup$
– PeterT
11 hours ago
$begingroup$
@PeterT thank you for the kind words, they are very much appreciated. Funnily enough I stumbled upon rubberduck earlier today and I am now slowly familiarising myself with it, seems like I was on the right track with adding that to my toolkit.
$endgroup$
– Nick
6 hours ago