View Single Post
  #7   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default Cleaning up Macro to Copy Word Formfields into Excel

That doesn't sound like the best approach to me. But I don't know enough about
MSWord to know if that's true.

I'd ask in a forum dedicated to MSWord for a better approach.

But if you're only looking to populate a single form field, can't you refer to
it by its name--not loop through all of them?

expect_ed wrote:

Thanks Dave,
Yes, that fixed it, or rather using just .FormField fixed it (including the
Word gave a wierd error about trying to open some other Excel file)
I now have it working to read in the first form, and it actually opens the
subsequent forms and goes through them apparently collecting the form field
data, but it only puts the data from the first form in Excel.

The only change i made to the code was to add "On Error Resume Next" after
the temp=oFld.Result line because if the formfield was blank it would bomb
out. (is there a better way to handle that error?)

I also inserted a few MsgBox commands so I can confirm that the strFilename
variable is updating correctly, which it is.
Thanks again for your help, both past and future.
ed

"Dave Peterson" wrote:

Untested.

Dim oFld As Word.FormField
....

For Each oFld In wdDoc.FormFields



expect_ed wrote:

OK, Adjusted for the path and got it to open the file. Now it gets to:

For Each oFld in wdDoc

And I get a
Run-time error '438':
Object doesn't support this property or method

Help very appreciated.
ed
"expect_ed" wrote:

With help from macropod in the Word General Group and Jean-Yves in this group
I think I have a start on copying all the Formfield data from a series of
Word files into Excel. But I'm stuck on a command I do not fully understand.
The intent of the code is to:
1. Dim and initialize all the variables, etc.
2. Get the first filename in a directory that holds all the relevant files
3. Open each file in turn (THIS IS THE PROBLEM AREA SO FAR)
4. Read each FormField in the open file
5. Set a cell via offsets to each Formfield value
6. Close the document and repeat from step 3
7. Quit Word and clear the objects

Here is my code so far:
Sub WordToExcel()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim x As Integer
Dim y As Integer
Dim strFilename As String
Dim temp As String
Dim oFld As FormField

Set wdApp = New Word.Application
'initialise counter
x = 1
y = 1
'search for first file in directory
strFilename = Dir("C:/AAA-TriageHolder/*.doc")
Do While strFilename < ""
Set wdDoc = wdApp.Documents.Open(strFilename) '//Error message results
here
With wdDoc
For Each oFld In wdDoc
temp = oFld.Result
Range("A2").Offset(x, y) = temp
y = y + 1
Next oFld
End With

wdDoc.Close
x = x + 1
strFilename = Dir
Loop
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub

As noted above, I get an error when I run the macro saying:

Run-time error '5174':
This file could not be found.
Try one or more of the following:
*Check the spelling of the name of the document.
*Try a different file name.
(A12345.doc)

The A12345.doc is the first file in the directory, so it is clearly seeing
it in order to set the strFilename, so why can it not then find the file.

Any help greatly appreciated.
ed


--

Dave Peterson


--

Dave Peterson