Egyéni tulajdonságok importálása

Szövegszerkesztő
viri1976
Hozzászólások: 2
Csatlakozott: 2012. január 16., hétfő 11:25

Egyéni tulajdonságok importálása

Hozzászólás Szerző: viri1976 »

Sziasztok!

Azt szeretném kérdezni, hogy próbálkozott e valaki már küldő forrásból (egyelőre bármilyen külső forrás érdekel) behivatkozni valamilyen importálási eljárással adatokat az Egyéni tulajdonságok közé.

Az lenne a célom, hogy létrehozok egy külsős adatforrásban egy "egyéni tulajdonságok listát" és ezt hivatkoznám be a writer-be valahogy a /Tulajdonságok/Egyéni Tulajdonságok ablakba.

esetleg van valakinek erre az eljárásra 5lete?

köszi!

viri1976
LibreOffice 3.4.4 a Windows 7 -en
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4031
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Egyéni tulajdonságok importálása

Hozzászólás Szerző: Zizi64 »

De hát erre (is) valók a sablonok. Beírod a mintafájlba a tulajdonságokat, és sablonként mented el.
Amikor előveszed az elmentett tulajdonságok ott lesznek a fájlban.



Ha dinamikusan kell váltogatni egy adott fájlban a Tulajdonság-adatokat, akkor szóba jöhet a makrós megoldás. Én csak Calcban csináltam még ilyet, ott lehetséges a Tulajdonságok változtatása "kívülről", makróval. És nem is az "Egyéni" tulajdonságokat változtatom, hanem a "Leírás" fülön lévőket.

Az Open/LibreOffice API felületét kell megismerned, megtanulnod; ehhez a feladathoz konkrétabban itt találsz információt:
http://www.openoffice.org/api/docs/comm ... rties.html

Ezzel a makróval a meglévő egyéni tulajdonságokat tudod kilistázni:

Kód: Egész kijelölése

Sub List_user_props
Dim udefProps As Object, allUProps As Object, oneUProp As Object
Dim UPlist As String

udefProps = ThisComponent.DocumentProperties.UserDefinedProperties
allUProps = udefProps.PropertyValues
UPlist = ""
For Each oneUProp in allUProps
  if IsUnoStruct(oneUProp.Value)  then
    With oneUProp.Value
      UPlist = UPlist & oneUProp.Name & " = " & _
      DateSerial(.Year, .Month, .Day) & chr(13)
    End With
  else
    UPlist = UPlist & oneUProp.Name & " = " & oneUProp.Value & chr(13)
  end if
Next
MsgBox(UPlist, 0, "User Defined Properties")
End Sub

Ezzel meg törölni:

Kód: Egész kijelölése

Sub Delete_user_props

' Use an intermediate variable, its more clear !
Dim userDefProps As Object
userDefProps = ThisComponent.DocumentProperties.UserDefinedProperties

' remove all properties
Dim propsArray As Variant, userProp As Object

propsArray = userDefProps.PropertyValues
for each userProp in propsArray
  print "deleting : " & userProp.Name
  userDefProps.removeProperty(userProp.Name)
next
end sub

Ez meg beír két tulajdonság értéket (csak a legközelebbi megnyitásnál fognak vizuálisan is megjelenni, ha a menüből nézed meg az eredményt):

Kód: Egész kijelölése

Sub Add_Custom_Property
Dim Doc As Object
   Doc = ThisComponent
   Doc.DocumentProperties.UserDefinedProperties.addProperty("Kétállapotú tulajdonság",0,True)
   Doc.DocumentProperties.UserDefinedProperties.addProperty("Szöveges tulajdonság",0,"Ez egy szöveg")
end sub   
Ezeket találtam hirtelen net-szerte, keress te is, hátha találsz további példákat...
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
viri1976
Hozzászólások: 2
Csatlakozott: 2012. január 16., hétfő 11:25

Re: Egyéni tulajdonságok importálása

Hozzászólás Szerző: viri1976 »

nagyon köszönöm!

megnézem.

üdv.

viri1976
LibreOffice 3.4.4 a Windows 7 -en
Avatar
editor
Önkéntesek
Hozzászólások: 259
Csatlakozott: 2011. augusztus 3., szerda 8:36

Re: Egyéni tulajdonságok importálása

Hozzászólás Szerző: editor »

http://user.services.openoffice.org/hu/ ... f=6&t=1165
A Copy-paste beleszakad című topik ebbe az irányba ment el, javaslom, hogy itt folytassuk. Zizi64 abban a topikban adott egy megoldást arra, hogy miként lehet egyik dokumentum tulajdonságmezőit egy makró segítségével "felszedni" és egy másik dokumentumra átpakolni. Ez már egy módja annak, hogy valamely dokumentumba ne begépeléssel, hanem gépi másolással, egyfajta importtal kerüljenek be az értékek.

A hivatkozott topikban kitettem két példafile-t, az EDITOR_P001a és EDITOR_P001b néven. Ezekben a dokumentumokban van harmincnégy egyedi tulajdonságmező, és van egy táblázat is, ami kilistázza a dokumentummezőket, megmutatja azok pillanatnyi értékét.

Nos, rajtam például sokat segítene, és valószínűleg viri11976-nak is megoldás lenne ennek a táblázatnak a fordítottja. Vagyis ha tudnánk egy olyan makrót írni, ami egy táblázatból, egy olyan táblázatból, ami az egyéni tulajdonságok kívánt értékeit tartalmazza literálisan (begépelve) átpakolgatná az értékeket az egyéni tulajdonság mezőkbe.
Libre Office Verzió: 6.2.3.2. Windows 8.1 Windows 10
Válasz küldése