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;








0












$begingroup$


Here is my code for a sub which does the following:



  1. read header of a table into an array


  2. reads first row of said table into a 2nd array


  3. 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









share|improve this question









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

















0












$begingroup$


Here is my code for a sub which does the following:



  1. read header of a table into an array


  2. reads first row of said table into a 2nd array


  3. 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









share|improve this question









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













0












0








0





$begingroup$


Here is my code for a sub which does the following:



  1. read header of a table into an array


  2. reads first row of said table into a 2nd array


  3. 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









share|improve this question









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:



  1. read header of a table into an array


  2. reads first row of said table into a 2nd array


  3. 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






share|improve this question









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.











share|improve this question









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.









share|improve this question




share|improve this question








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
















  • $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










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.









draft saved

draft discarded


















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.









draft saved

draft discarded


















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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

香港授勳及嘉獎制度 目录 勳章及獎狀類別 嘉獎等級 授勳及嘉獎提名 統計數字 多次獲頒勳章或獎狀的人士 爭議 褫奪機制 参考文献 外部連結 参见 导航菜单統計數字一九九七年七月二日(星期三)香港特別行政區的授勳制度六七暴動領袖獲大紫荊勳章 董建華被斥為肯定殺人放火董建華授勳楊光 議員窮追猛打蘋論:顛倒是非黑白的大紫荊董讚楊光有貢獻避談暴動董拒答授勳楊光原因撤除勳銜撤除勳銜撤除勳銜特首掌「搣柴」生殺權行為失當罪 隨時「搣柴」失長糧政府刊憲 許仕仁郭炳江遭「搣柴」去年中終極上訴失敗 許仕仁郭炳江撤勳章太平紳士猛料阿Sir講古—— 「搣柴」有故一九九八年授勳名單一九九九年授勳名單二○○三年授勳名單二○○八年授勳名單二○○七年授勳名單政府總部禮賓處 - 授勳及嘉獎香港特別行政區勳章綬帶一覽(PDF)(非官方)

Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar