Oldal: 1 / 1

[Megoldva] HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 6., vasárnap 7:52
Szerző: Aimre
Először is elnézést kérek, ha bármilyen írott, vagy egyéb szabályt megszegek.
Esetleg rossz érzéseket keltek bárkiben.
Először életemben kommunikálok így.

Sajnos az APPI leírásban nem találtam megoldást, nem vagyok jó angolban.
Lehet, hogy nagyon evidens gondot vetek fel, de hát nekem ez még gond.


Op: XP sp3
Libreoffice: Verzió: 4.2.4.2

HTA(vbs)-ból kéne Scalcot (vagy bármi mást) hívni, illetve calc(basic) ból dost vagy bármi mást pl:.AcroRd32.

Ami ms.excelben ment az Libreoffice basicból nem:
Pl.:

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

Sub pdf_nyit()
   'Dim pdf_Fszam As Long
   Dim parancs$
   On Error GoTo PDFhiba
   ChDir "C:\Program Files\Adobe\Reader 9.0\Reader"
   parancs$ = "AcroRd32.exe C:\munka\pelda.pdf"
   pdf_Fszam = Shell(parancs$, vbNormalFocus)
   GoTo PDFvege
PDFhiba:
   MsgBox "Hiba száma: " + Str$(Err) + Chr(13) + Space(8) + "szövege: " + Err.Description
   Err.Clear
PDFvege:
End Sub
Az Actvex megy vbs ből, de nem megy hta-ból

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

Set objServiceManager= WScript.CreateObject("com.sun.star.ServiceManager")
Set objCoreReflection= objServiceManager.createInstance("com.sun.star.reflection.CoreReflection")
Set objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop")
Dim args()	
Set objDocument= objDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, args)
 Szerkesztett: Globális moderátor: a kódrészleteket a jobb átláthatóság kedvéért a "Code" TAG-gel emeltem ki. 

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 6., vasárnap 13:38
Szerző: Aimre
Sziasztok,

Picit alakulok.
LibreOfficeból már tudok külsőt hivni. Pl.:

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

Sub pdf_nyit()
   Dim WshShell  as Object
   Dim menu_bat  as String
   Dim pdf_Fszam As Long
   Set WshShell = CreateObject("WScript.Shell")
   On Error GoTo PDFhiba
   ChDir "C:\Program Files\Adobe\Reader 9.0\Reader"
   menu_bat = "AcroRd32.exe C:\hid\701.pdf"
   WshShell.Run(menu_bat)
   Set WshShell = Nothing            
   GoTo PDFvege
PDFhiba:
   EMsgBox "Hiba száma: " + Str$(Err) + Chr(13) + Space(8) + "szövege: " + Err.Description
   Err.Clear
PDFvege:
End Sub
HTA ból is todok Scalcot ot hívni, de még nem tudok kommunikálni(cellába írni/olvasni). Pl.:

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

  Set WshShell = CreateObject("WScript.Shell")
          menu_bat="c:\hid\napzaras.ods" 
          menu_bat="C:\hid\WriterDemo.vbs" 
          WshShell.Run(menu_bat)
          Set WshShell = Nothing               
          Set WshShell = Nothing                                
          window.close          
VBS ben hogy ír a cellába az ember ha már nyitva van a sheet?

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 6., vasárnap 19:23
Szerző: Zizi64
Sajnos az APPI leírásban nem találtam megoldást, nem vagyok jó angolban.
Lehet, hogy nagyon evidens gondot vetek fel, de hát nekem ez még gond.
A programozási felület neve API, és nem APPI.
Egy minimális angoltudás nélkül nehéz lesz. Remek leírások, fórumtémák, kódrészletek találhatók szerte a neten - de többségében angolul.


VBS ben hogy ír a cellába az ember ha már nyitva van a sheet?
Nem látom a példakódodban azt, hogy hol is nyitod meg az .ods Dokumentumot, és fogod meg a Munkalapot?!
Itt van némi példakód:
"How to send data from a VB program to OpenOffice.org Calc directly"
http://www.ultimaserial.com/exo.html

Itt cellatartalom olvasásáról van szó, de az írás nagyon hasonlóan megy:
https://forum.openoffice.org/en/forum/v ... 20&t=37372

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 16:19
Szerző: Aimre
Köszönöm, most jó.

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 16:26
Szerző: Zizi64
Akkor nekem is...
:-)

Mi jó? Megoldódott a probléma?

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 16:39
Szerző: Aimre
Az egyik linkről amit küldtél, kivettem a kódot és addig variáltam, hogy most hta-ból is jőn a Calc. Olvasni is tudok cellát. Írni még nem de ez csak idő kérdése.

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

    Sub window_onload
          window.resizeTo 640,344                  '*****    640,344
          document.title="Test"
          Set FSO = CreateObject("Scripting.FileSystemObject")
	  Set oSM = CreateObject("com.sun.star.ServiceManager")
	  Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
	  cURL = "file:///C:/hid/napzaras.ods"
          set oDoc = oDesk.loadComponentFromURL( cURL, "_blank", 0, Array() )
          set oSheet = oDoc.getSheets().getByName( "munka" )
          set oCell = oSheet.getCellByPosition( 1, 2 )
          nValue = oCell.getValue()
          msgbox nValue 
     end sub

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 16:44
Szerző: Zizi64

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

nValue = oCell.getValue()
Elvileg a fordítottjának írni kellene a cella értékét. (már ha valóban ÉRTÉKET akarsz a cellába írni, és nem szöveget, képletet, lokális képletet...)

Valami ilyesmi módon:

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

oCell.Value = nValue+1
Esetleg:

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

oCell.SetValue = nValue+1
Vagy:

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

oCell.SetValue(nValue+1)
a "+1" csak azért van, hogy lásd a változást...

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 16:58
Szerző: Zizi64
...de jó lenne, ha néhány szóval leírnád, hogy mivel írod, és hogyan futtatod a kódot, mert a HTA-ról fogalmam sincs, csak az AOO/LO API-hoz konyítok valamelyest.

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 17:29
Szerző: Aimre
A HTA kiterjesztésű filet nem a böngésző, hanem az mshta.exe futtatja..
A VBScript nyelve érvényes rá.
Itt egy teljes forrás, ami csak a Calcot hívja és olvas, meg ír.
Én a Juhász Tibor Kiss Zsolt
Tanuljunk Programozni
Visual Basic Script
Objektumok
Web c. könyvéből vettem amit tudok.

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

<!--  *********  HTA ablak megjelenési paraméterek  VER:1.0  *********  -->
<HTML>
  <HEAD>
      <meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1250">
      <HTA:Application id   = "telhta"
          applicationName = "telefon"
          border          = "thin"
          borderStyle     = "sunken"
          caption         = "yes"
          contextMenu     = "no"
          innerBorder     = "yes"
          maximizeButton  = "no"
          minimizeButton  = "yes"
          navigable       = "no"
          scroll          = "no"
          scrollFlat      = "yes"
          selection       = "no"
          showInTaskBar   = "yes"
          singleInstance  = "no"
          sysMenu         = "yes"
          windowState     = "normal">
      </HTA>
      </meta>
  </HEAD>
<!--  *********  VBS kezdete  *********  -->
    <SCRIPT language = "VBS">
       'Option Explicit
       public ev,ido,ho,nap,mainap,FSO,S,WScript
       Dim WshShell,menu_bat,hiba,i,munka,tabla,cURL,oDoc,oSheet,oCell
       public oSM,oDesk,oRange
       public objServiceManager 
       Const kiv    ="c:\"
       Const email  ="C:\"         
'********************  Betöltéskor teendők  ********************
      Sub window_onload
          window.resizeTo 640,344                  '*****    640,344
          document.title="Test"
          Set FSO = CreateObject("Scripting.FileSystemObject")          
	  Set oSM = CreateObject("com.sun.star.ServiceManager")
	  Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
	  cURL = "file:///C:/hid/napzaras.ods"
          set oDoc = oDesk.loadComponentFromURL( cURL, "_blank", 0, Array() )
          set oSheet = oDoc.getSheets().getByName( "munka" )
          set oCell = oSheet.getCellByPosition( 1, 2 )
          nValue = oCell.getValue()
          msgbox nValue
          oCell.Value = nValue+1          
          msgbox oCell.getValue()
          oCell.SetValue = nValue+1                    
     end sub     
    </SCRIPT>
    <BODY>
    </BODY>
</HTML>

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 17:35
Szerző: Zizi64
Köszi az infót!

Ezek szerint a kódodban használt két megoldás ("Set"-es és "Set" nélküli szintaxis) mindegyike írja a cella tartalmát?

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 17:42
Szerző: Aimre
Nem: a setes megoldásra ez van:
Hiba: Az objektum nem támogatja ezt a tulajdonságot vagy metódust.: 'oCell.SetValue'

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 17:43
Szerző: Zizi64
...És akkor a "Set" nélküli??

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 8., kedd 17:48
Szerző: Zizi64
Starbasic-ből ("belülről") programozom a Calc-ot, ott a

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

oCell.setValue(DateValue(Now))

parancs nekem beírja a cellába az aktuális dátumot...

Tehát "paraméterként" adom át az adatot...

Re: HTA ból Calc, LibreOfficeból cmd command stb.

Elküldve: 2014. július 9., szerda 17:47
Szerző: Aimre
Startbasicből én így csinálom.

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

sub cellabair_kezi    
    ThisComponent.Sheets(0).getCellRangeByName("A9").String = "kézzel"
end sub
Nem tudom, a setes miért nem megy HTA ból, de egy megoldás nekem elég.
Most azon küzdök, hogy HTA-ból láthatatlan(--invisible) módban tudjam hívni a Calcot.
Itt valahogy:

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

set oDoc = oDesk.loadComponentFromURL( cURL, "_blank", 0, Array() )'
Igazából az API ról leszedtem az Activex filejait, át kéne böngészni.
Így kiderülne egy két dolog.. C ben még nem programoztam és az többnyire c.