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
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:
Esetleg:
Vagy:
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
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.