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

瀋陽號驅逐艦 目录 接收與服役 配置反潛直升機 武進三型性能升級 歷史 除役 參考資料 外部連結 导航菜单Taiwan Air Power海疆老兵-陽字號驅逐艦沿革World Navies Today: Taiwan (Republic of China)DD-839 USS POWER

波兰旗帜列表 目录 国旗 军旗 其他制服部门旗帜 特别国家机构船只 参考文献 外部链接 导航菜单Polskie flagi, chorągwie, bandery... [波兰旗帜、条幅、船旗等]原始内容Ustawa z dnia 31 stycznia 1980 r. o godle, barwach i hymnie Rzeczypospolitej Polskiej oraz o pieczęciach państwowychZarządzenie Ministra Obrony Narodowej z dnia 14 grudnia 2005 r. zmieniające zarządzenie w sprawie szczegółowych zasad używania znaków Sił Zbrojnych Rzeczypospolitej Polskiej oraz ustalenia innych znaków używanych w Siłach Zbrojnych Rzeczypospolitej PolskiejZarządzenie Ministra Obrony Narodowej z dnia 29 stycznia 1996 r. w sprawie szczegółowych zasad używania znaków Sił Zbrojnych Rzeczypospolitej Polskiej oraz ustalenia innych znaków używanych w Siłach Zbrojnych Rzeczypospolitej PolskiejUstawa z dnia 19 lutego 1993 r. o znakach Sił Zbrojnych Rzeczypospolitej PolskiejHistoria Marynarki Wojennej RP [波兰海军史]Rozporządzenie Ministra Spraw Wewnętrznych i Administracji z dnia 12 kwietnia 2002 r. w sprawie wzoru flagi oraz oznakowania jednostek pływających i statków powietrznych Straży GranicznejRozporządzenie Ministra Spraw Wewnętrznych i Administracji z dnia 18 kwietnia 2005 r. w sprawie wzoru flagi oraz oznakowania jednostek pływających i statków powietrznych PolicjiRozporządzenie Ministra Infrastruktury z dnia 21 października 2005 r. w sprawie wzorów flag dla statków morskich na oznaczenie pełnionej specjalnej służby państwowej oraz okoliczności i warunków ich podnoszenia波兰旗帜波兰

Indenting and Dedenting ASP code with Python