Thanks!

Making progress... finally.

Your code actually retrieved the text within my first "text box" (which is at 
least something!) but then it fails with the error:

LibreOffice 4.0.2.2
BASIC runtime error.
'423'
Text

it points to line:
 Print x.getName() & " : " & x.Text

It may be choking on a "formatted field" within the document.

Just out of curiosity, how did you know that you had to use 
ThisComponent.DrawPage.Forms? As a novice, I find the documentation to be quite 
confusing and a supposedly "simple" task such as getting text field values 
seems to be quite difficult. I mean, I found examples on the net and they all 
start with something like:

  vEnum = ThisComponent.getTextFields().createEnumeration()
  If Not IsNull(vEnum) Then
    Do While vEnum.hasMoreElements()
      vVal = vEnum.nextElement()

but then I either don't know how to continue or the examples I found on the net 
don't work (maybe outdated OO or LO versions).

BTW, is there an IDE that can auto-complete Basic code (eg. vVal.??? as in the 
example above).

Thanks,

Vieri

--- On Wed, 5/8/13, [email protected] 
<[email protected]> wrote:

> I've created two "Text Boxes" in a
> form in a writer document.
> 
> I can iterate over them like this grabbing the text as I go
> 
> 
> Sub EnumerateFields
> 
>     oDoc = ThisComponent
>     oDrawPage = oDoc.DrawPage
>     oForm = oDrawPage.Forms.GetByIndex(0)
>       For i = 0 To oForm.getCount()-1
>          x =
> oForm.getByIndex(i)
>          Print
> x.getName() & " : " & x.Text
>       Next
>   
> End Sub
> 
> 
> Does this help in anyway?
> 
> Iain
> 
> 
> On Wednesday 08 May 2013 01:50:02 Vieri wrote:
> > --- On Tue, 5/7/13, Vieri <[email protected]>
> wrote:
> > > --- On Mon, 5/6/13, Andrew Douglas
> > > Pitonyak <[email protected]>
> > > 
> > > wrote:
> > > > On 05/06/2013 05:21 AM, Vieri wrote:
> > > > > Hi,
> > > > > 
> > > > > I have an odt writer document with 2
> input text
> > > 
> > > fields
> > > 
> > > > (added with the form designer toolbar). I
> manually type
> > > 
> > > text
> > > 
> > > > into one of the fields. I copy/pasted a macro
> to see if
> > > 
> > > I
> > > 
> > > > could grab the text within the input field
> but haven't
> > > 
> > > had
> > > 
> > > > any luck. This is the test macro in Basic:
> > > > > Sub EnumerateFields
> > > > >
> > > > >    vEnum =
> > > > 
> > > >
> ThisComponent.getTextFields().createEnumeration()
> > > > 
> > > > >    If Not IsNull(vEnum) Then
> > > > >      If
> vEnum.hasMoreElements() Then
> > > > >        Print "OK"
> > > > >      Else
> > > > >        Print "NOT
> OK"
> > > > >      End If
> > > > >    End If
> > > > >
> > > > > End Sub
> > > > > 
> > > > > If I manually run this macro I get the
> "NOT OK"
> > > > 
> > > > message.
> > > > 
> > > > > What am I doing wrong?
> > > > > What is the correct way of getting the
> text field
> > > > 
> > > > elements?
> > > > 
> > > > > Thanks
> > > > > 
> > > > > Vieri
> > > > 
> > > > I grabbed these two routines from my test
> modules
> > > 
> > > without
> > > 
> > > > running them first....
> > > 
> > > Hi,
> > > 
> > > Thanks for the reply but I'm still having
> trouble.
> > > I'm either way off-course, misusing LO or making a
> dumb
> > > rookie mistake.
> > > 
> > > I copied your macros to my odt document.
> > > I then did a "tools, macros, run macro..." and
> selected the
> > > Subs I copied.
> > > If I run EnumerateTextFields then it yields the
> "Finished"
> > > message box (nothing else).
> > > If I run DisplayMasterFields then it yields the
> following
> > > message:
> > > 
> > > ===Text Field Masters===
> > >
> (com.sun.star.text.fieldmaster.SetExpression.Illustration,Illustration)
> > >
> (com.sun.star.text.fieldmaster.SetExpression.Table,Table)
> > >
> (com.sun.star.text.fieldmaster.SetExpression.Text,Text)
> > >
> (com.sun.star.text.fieldmaster.SetExpression.Drawing,Drawing)
> > > 
> > > My odt document has 2 input fields in a form.
> > > 
> > > By the way, if I place a button within my form and
> configure
> > > the "Mouse button pressed" to launch, say,
> > > EnumerateTextFields then I get the following error
> message:
> > > "LibreOffice 4.0.2.2 BASIC runtime error. '423'
> > > getTextFields" and it points at the line:
> > > "oEnum =
> oDoc.getTextFields().createEnumeration()"
> > > 
> > > I'm stuck on something that should be quite
> simple.
> > > I'm attaching my odt file hoping that someone can
> tell me
> > > what novice mistake I'm making.
> > 
> > Trying to attach the file again but it seems that the
> mailing list strips it
> > out.
> > 
> > Thanks,
> > 
> > Vieri
> 
> -- 
> To unsubscribe e-mail to: [email protected]
> Problems? 
> http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
> Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
> List archive: http://listarchives.libreoffice.org/global/users/
> All messages sent to this list will be publicly archived and
> cannot be deleted
> 
> 

-- 
To unsubscribe e-mail to: [email protected]
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Reply via email to