Dim enuTF As Object, aTextField As Object
Dim sHow As String
enuTF = oDoc.TextFields.createEnumeration
Do While enuTF.hasMoreElements
aTextField = enuTF.nextElement
If aTextField.supportsService("com.sun.star.text.TextField.Input") Then
sHow = aTextField.getPropertyValue("Content")
End If
Loop
ma gia' da " oDoc.TextFields" mi da' un errore ("Object don't support this property or method")
nel codice che hai allegato non hai definito oDoc, probabilmente ti manca la riga oDoc = ThisComponent
stai parlando di Calc, Writer, Base ?
hai provato ad usare il registratore di macro ?
allega un file di esempio col risultato che vorresti ottenere.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Sub ConnectOpenOffice()
If IsOpenOfficeConnected Then Exit Sub
On Error Resume Next
Set OpenOffice = CreateObject("com.sun.star.ServiceManager")
On Error GoTo 0
If isNullEmpty(OpenOffice) Then
Err.Raise vbObjectError + OOoErrorN, "OpenOffice", OOo_connectKO
Else
Set StarDesktop = CreateUnoService("com.sun.star.frame.Desktop")
Set OOoIntrospection = CreateUnoService("com.sun.star.beans.Introspection")
Set OOoDisp = CreateUnoService("com.sun.star.frame.DispatchHelper")
End If
End Sub
ConnectOpenOffice
Set oDoc= StarDesktop.LoadComponentFromURL(convertToURL(strFilName), "_blank", 0, args)
oForm = oDOc.drawpage.forms.getbyindex(0)
for iCntrl = 0 to oForm.count - 1 ' FOR SUGLI ELEMENTI DEL 'FORMULARIO'
oCntrl = oForm.getbyindex(iCntrl) ' ACQ. ELEMNTO DI CICLO
if oCntrl.Name = sName then ' SE HA IL NOME DEL MIO ELEMENTO
oCntrl2=oCntrl
exit for
end if ' ENDIF ELEMENTO
next
sName deve essere il nome del tuo textfield, alla fine del ciclo oCntrl2 è l'oggetto textfiled che desideri
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Dim vTextFieldEnum As Object
Dim vTextField As Object
Dim I As Integer
Dim sFieldName$, sFieldValue$, sFieldContent$, sInstanceName$
Set vTextFieldEnum = objDocument.getTextFields.createEnumeration
Do While vTextFieldEnum.hasMoreElements()
Set vTextField = vTextFieldEnum.nextElement()
If vTextField.supportsService("com.sun.star.text.TextField.User") Then
sFieldName = vTextField.TextFieldMaster.Name
sFieldValue = vTextField.TextFieldMaster.Value
sFieldContent = vTextField.TextFieldMaster.Content
sInstanceName = vTextField.TextFieldMaster.InstanceName
If UCase(vTextField.TextFieldMaster.Name) = UCase("MyFieldName") Then
vTextField.TextFieldMaster.Content = strValue
Exit Do
End If
End If
Loop
objDocument.TextFields.Refresh
Bene. Però mi faresti un piacere? Mi spieghi come usi vb6 con openoffice? Sarebbe meglio dei link che spiegano a grandi linee la procedura da seguire. Il vb non l'ho mai usato, ma almeno chi si imbatte in questa discussione potrà farsi un'idea. Grazie
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Public OpenOffice, StarDesktop, OOoIntrospection, OOoDisp
Call ConnectOpenOffice()
Set objDocument = StarDesktop.LoadComponentFromURL(urlfile, "_blank", 0, args)
....
...
...
SaveDocument objDocument, sFileToSave
Sub ConnectOpenOffice()
If IsOpenOfficeConnected Then Exit Sub
On Error Resume Next
Set OpenOffice = CreateObject("com.sun.star.ServiceManager")
On Error GoTo 0
If isNullEmpty(OpenOffice) Then
Err.Raise vbObjectError + OOoErrorN, "OpenOffice", OOo_connectKO
Else
Set StarDesktop = CreateUnoService("com.sun.star.frame.Desktop")
Set OOoIntrospection = CreateUnoService("com.sun.star.beans.Introspection")
Set OOoDisp = CreateUnoService("com.sun.star.frame.DispatchHelper")
End If
End Sub
Function SaveDocument(ByRef oDoc As Object, ByVal sFileName As String) As Boolean
'Save to given filename, will overwrite if exists!
Dim aFileProperties(0) As Object 'New com.sun.star.beans.PropertyValue
Dim sUrl As String
sUrl = GetFileURL(sFileName)
Set aFileProperties(0) = MakePropertyValue("Overwrite", True)
On Error Resume Next
oDoc.storeAsURL sUrl, aFileProperties()
If (Err.Number <> 0) Then
MsgBox "Failed to save [" + sFileName + "], err=" + CStr(Err.Number) + ": " + Err.Description
End If
SaveDocument = (Err.Number = 0)
End Function
Ultima modifica di charlie il giovedì 30 ottobre 2014, 18:29, modificato 1 volta in totale.
Motivazione:In questo e nei messaggi precedenti: evidenziato codice