Search code examples
vbams-accessms-wordms-access-2010

Access Code partially stopped working (not populating data to word document)


I have an Access database with linked tables. I have created a code to do the following:

1- Create a folder in a specific location with a specific name (name populated from data in access).

2- Open a word document saved in a specific path

3- I then use formfields in the document to populate the word document with data from the table

4- Lastly, I save the word document to the previously created folder with a new name using data from the table

I have been using this code successfully for well over a year with no issues.

Suddenly, for no apparent reason and without any change to the code it stopped populating the word document with data. note, its still doing steps 1,2, & 4 but not step 3.

I cannot figure out what the issue is and any help would be much appreciated.

Below is a sample of the code used:

Sub Onboarding_Documents_Saudi_Click()

'STEP ONE: create the appropriate Folder

Dim fs, cf, strFolder

On Error Resume Next

strFolder = "C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\New Employees\" & Me.Name_In_English & " " & Me.Emp_Id

Set fs = CreateObject("Scripting.FileSystemObject")

If fs.FolderExists(strFolder) = True Then

MsgBox "'" & strFolder & "' already exists!"

Else

Set cf = fs.CreateFolder(strFolder)

If fs.FolderExists(strFolder) = True Then

MsgBox "'" & strFolder & "' successfully created!"

Else

MsgBox "'" & strFolder & "' was not successfully created!"

End If

End If

'STEP TWO:Make Contract .

Dim appWord As Word.Application

Dim doc As Word.Document

Dim Base As String

Base = Format(Me.base_salary, "Standard")

Dim Housing As String

Housing = Format(Me.housing_allowence, "Standard")

Dim Trans As String

Trans = Format(Me.transportation_allowence, "Standard")

On Error Resume Next

Err.Clear

Set appWord = GetObject(, "Word.Application")

If Err.Number <> 0 Then

Set appWord = New Word.Application

End If

Set doc = appWord.Documents.Open("C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\Forms\Onboarding Documents\Access\Saudi\ContractSaudiAccess.docx", , True)

With doc

.FormFields("frnameinarabic").Result = Me.Name_In_Arabic

.FormFields("frnameinenglish").Result = Me.Name_In_English

.FormFields("frid").Result = Me.Document_ID_number

.FormFields("frmobile").Result = Me.mobile_number

.FormFields("frjtenglish").Result = Me.Job_title_English

.FormFields("frjtarabic").Result = Me.Job_Title_Arabic

.FormFields("frbasesalary").Result = Base

.FormFields("frhousing").Result = Housing

.FormFields("frtrans").Result = Trans

.FormFields("fremail").Result = Me.Personal_Email

.FormFields("empid").Result = Me.Emp_Id

.FormFields("joindate").Result = Me.Join_Date

.FormFields("joindatehijri").Result = Me.[Join Date Hijri]

.FormFields("contractperiod").Result = Me.[Contract Length]

.FormFields("contractperiodar").Result = Me.[Contract Length Ar]

.FormFields("frdepartment").Result = Me.Department

.FormFields("frdepartmentarabic").Result = Me.Department_Ar

.FormFields("joindate1").Result = Format(Me.Join_Date, "dddd dd/mmm/yyyy", vbUseSystemDayOfWeek)

.Activate

.Visible = True

.Activate

End With

doc.Fields.Update

doc.SaveAs2 "C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\New Employees\" & Me.Name_In_English & " " & Me.Emp_Id & "\" & FileName & "Contract " & Me.Name_In_English & " " & Me.Emp_Id & ".docx"

Set doc = Nothing

Set appWord = Nothing```

Solution

  • Could this be a change due to Office Updates? I have something similar which works with Word v1910 (Build 12130.20272) but not in v2301 (Build 16026.20146). That may explain the second machine suddenly not working also?

    It appears opening the "template" document which you are then adding information into opens read only as requested but now no longer allows changes to be made, which is where I think your code is skipping too? Our running code displays the Word document after filling in the form fields and there is no option to change the file mode to the top right of the screen to allow editing.

    Screen shot of viewing / editing options from Word toolbar

    I don't have an answer as to how to fix it as yet, I'm afraid, apart from making the template document open for write access and changing rights on the network to make the documents read only. We've not tested that as yet though. Hopefully it helps by giving you something else to check as the code has run successfully for a time and suddenly stopped.

    I'm currently trying to find an option for opening a file as read only but allowing changes to the open document but am struggling to find anything like this in the Microsoft documentation. If I do find a solution I'll come back and post it.

    It may work for you changing the following line from True to False at the end if the file is somewhere not shared.

    Set doc = appWord.Documents.Open("C:\Users\1161\OneDrive - Anfas Medical Care\Master - Anfas Medical Care\Forms\Onboarding Documents\Access\Saudi\ContractSaudiAccess.docx", , True)