I have the following Macro that imports form fields from word into Excel taken from a previously closed post. When it exports it always puts the data on the next row in excel, instead I want it to always override the previous data and put the new data in row 2 after my headers. I have played around and can't seem to figure out how to accomplish this.
Sub GetFormData() 'Note: this code requires a reference to the Word object model 'To do this, go to Tools|References in the VBE, then scroll down to the Microsoft Word entry and check it. Application.ScreenUpdating = False Dim wdApp As New Word.Application, wdDoc As Word.Document, CCtrl As Word.ContentControl, FmFld As Word.FormField Dim strFolder As String, strFile As String, WkSht As Worksheet, i As Long, j As Long strFolder = GetFolder If strFolder = "" Then Exit Sub Set WkSht = ActiveSheet i = WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row strFile = Dir(strFolder & "\*.doc", vbNormal) While strFile <> "" i = i + 1 Set wdDoc = wdApp.Documents.Open(Filename:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc j = 0 For Each CCtrl In .ContentControls With CCtrl Select Case .Type Case Is = wdContentControlCheckBox j = j + 1 WkSht.Cells(i, j).Value = .Checked Case wdContentControlDate, wdContentControlDropdownList, wdContentControlRichText, wdContentControlText j = j + 1 WkSht.Cells(i, j).Value = .Range.Text Case Else End Select End With Next For Each FmFld In ActiveDocument.FormFields j = j + 1 With FmFld Select Case .Type Case Is = wdFieldFormCheckBox WkSht.Cells(i, j).Value = .Checked Case Else WkSht.Cells(i, j).Value = .Result Case Else End Select End With Next .Close SaveChanges:=False End With strFile = Dir() Wend wdApp.Quit Set wdDoc = Nothing: Set wdApp = Nothing: Set WkSht = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function


Reply With Quote
