How to create MS Word document automatically with Text file

This VBA code will help you to import data from a text file and insert it into the MS word document. This is useful when you have to create a report or formats in MS Word format, reading the data from a text file. The VBA code can be extended import extra data from the text file, and also you can add additional format as per your needs.

Please note that VBA macros can cause harm to your computer. First, open them in a disabled mode. To disable macros, to Developer tab, select macro security and then select Macro settings on the left side pane. In the right pane, select the second radio button, 'Disable all macros with notification'. The second option is better because it will notify you if there are any macros associated with your file. So you will not miss any document features that may be available after running a macro. But you can decide whether to allow the macros to run or not.

Please click on the below link to download the MS Word Template file. You can also download the text file used to import the data. I remind you that this is a sample file. You may have to modify the VBA code according to your requirement. You may have to rename the input file.

Please leave a comment below if you have any concerns.
MS word template

The VBA Code
-------------------
Sub Document_Open()
If (ActiveDocument.Name = "Template.docm") Then
With ActiveDocument
 
   On Error Resume Next
    .Variables.Add Name:="1", Value:="1"
    .Variables.Add Name:="2", Value:="2"
    .Variables.Add Name:="3", Value:="3"
    .Variables.Add Name:="4", Value:="4"
    .Variables.Add Name:="5", Value:="5"
    .Variables.Add Name:="6", Value:="6"
   
    Dim ReadData As String
    Dim myarray() As String
   
    Open ActiveDocument.Path & "\text.txt" For Input As #1

    Do Until EOF(1)
       Line Input #1, ReadData
    If Not Left(ReadData, 1) = "*" Then
    myarray = Split(ReadData, ",")
    End If

    Loop

    Close #1

    i = 1
    For Each f In myarray
       .Variables(i).Value = f
       i = i + 1
    Next f
    .Fields.Update
End With

With ActiveDocument
strFileName = "Agreement Between " & myarray(5) & " and " & myarray(0)
strPath = .Path

.SaveAs2 (strPath & "\" & strFileName)
'.Close SaveChanges:=wdDoNotSaveChanges
Application.Quit SaveChanges:=wdDoNotSaveChanges
'.Application.
End With
End If
End Sub
-------------------

FREE 50 Linux Interview Questions and Answers for Beginner Level

Desclainer: Please note that the answers to these questions are correct to my knowledge. Please feel free to comment if you find any incorre...