mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
wywoływanie zewnętrznych aplikacji https://forum.mix-soft.pl/viewtopic.php?f=15&t=461 |
Strona 1 z 1 |
Autor: | madziarekp [ 2008-12-14, 21:54 ] |
Tytuł: | wywoływanie zewnętrznych aplikacji |
Witam, mam pytanie czy ktoś mógłby mi podpowiedzieć jak wywołać zewnętrzny program np Excel w AmBasic? Dziękuję i pozdrawiam |
Autor: | wrob [ 2008-12-14, 22:22 ] |
Tytuł: | |
dispatch d d.Create("Excel.Application") d.Workbooks.Add() d.Workbooks.Open("c:\\aaa\\imp.xls") d.visible = 1 d.Range("A2").Select etc |
Autor: | barnie [ 2008-12-14, 22:30 ] |
Tytuł: | |
aby TYLKO uruchomić inny program z poziomu ambasica należy użyć funkcji Execute. przykładowo: Kod: Execute("C:\\Program Files\\Microsoft Office\\Office12\\excel.exe") |
Autor: | klesta [ 2009-01-22, 13:33 ] |
Tytuł: | |
a gdzie znależć jakąś pomoc (przykłady) dotyczącą metod Excela, które można wywołać z poziomu symfonii? tzn. w tym momencie próbuję na chybił trafił. Czytam helpa od VBA, rejestruje proste macra w execelu i próbuje je później odwzorować w symfonii (na podstawie tych klku linii napisanych przez wrob'a). Bo np. chciałbym wiedzieć jak (najchętniej z jakimś przykładem): - zapisać stworzony (lub otwarty) plik (save, saveas..) - zamknąć plik z zapisaniem zmian, lub z pominięciem zapisywania zmian jeśli napisałem tak: d.workbooks.close("SaveChanges:= False") to otrzymuję komunikat: "Wykonanie 'PropertyGet' lub 'Method' nie powiodło się" a jak piszę: d.workbooks.close() to otwiera mi sie okienko z pytaniem czy chce zapisac zmiany... - a chciałbym to trochę zautomatyzować Please help :) |
Autor: | wrob [ 2009-01-22, 14:18 ] |
Tytuł: | |
Przyklady sa w raportach - najlepiej pogrzeb w raportach typu lista plac w KDB - tam jest sporo rzeczy wysylanych do excela :) |
Autor: | rafal [ 2009-01-22, 22:15 ] |
Tytuł: | |
poza tym możesz używać wszystkich obiektów i metod jak w VBA Excela. |
Autor: | klesta [ 2013-10-21, 14:12 ] |
Tytuł: | Re: wywoływanie zewnętrznych aplikacji |
Witam, chciałem powrócić do tematu. Nurtuje mnie czy ktoś próbował (z sukcesami) otworzyć aplikację OpenOffice'a (Writer lub Calc)? Udało mi się wygooglować przykład opisujący sposób otwarcia OpenOffice'a Calc'a z poziomu Excela: Kod: Sub ControlOOo() Rem The service manager is always the first thing to create. Rem If OOo is not running, it is started. Set oManager = CreateObject("com.sun.star.ServiceManager") Rem Create the desktop. Set oDesktop = oManager.createInstance("com.sun.star.frame.Desktop") Rem Open a new empty Calc document. Dim args() Dim s As String Set s = "private:factory/scalc" Set oDoc = oDesktop.loadComponentFromURL(s, "_blank", 0, args()) Dim oSheet As Object Dim oSheets As Object Dim oCell As Object Set oSheets = oDoc.sheets.CreateEnumeration Set oSheet = oSheets.nextElement Set oCell = oSheet.getCellByPosition(0, 0) oCell.setFormula ("Hello From Excel") 'Cell A1 oCell.CellBackColor = RGB(127, 127, 127) End Sub i próbuję przełożyć to samo do Symfonii Handel Premium: Kod: dispatch objServiceManager dispatch objDesktop dispatch calc int args(1) objServiceManager.Create("com.sun.star.ServiceManager") objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") calc=objDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, args()) i oczywiście dostaje błąd składni języka (Oczekiwane wyrażenie) - chodzi o args... Czy ktoś pracuje z OpenOffice'm z poziomu Symfonii? Czy ktoś mógłby mi z tym pomóc (bardzo raczkuje jeśli chodzi o Basic'a w OO, więc byłbym wdzięczny za jakiś przykład :) |
Autor: | rafal [ 2013-10-21, 14:36 ] |
Tytuł: | Re: wywoływanie zewnętrznych aplikacji |
Zobacz czy zamiast Kod: int args zadziała Kod: dispatch args |
Autor: | klesta [ 2013-10-22, 13:43 ] | ||
Tytuł: | Re: wywoływanie zewnętrznych aplikacji | ||
Zadziałało, ale nie do końca... :( tzn wyświetla innego rodzaju błąd: Kod wygląda teraz tak: Kod: dispatch objServiceManager dispatch objDesktop dispatch calc dispatch args objServiceManager.Create("com.sun.star.ServiceManager") objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") calc=objDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, args) Sprawa rozbija się (raczej na pewno) o args. Poszperałem w necie za przykładami gdzie args nie jest pusta tablica. Znalazłem np: Kod: Sub getStock_new Dim cvs_quotes Dim Properties(1) As New com.sun.star.beans.PropertyValue Dim Dane As String Properties(0).Name = "Hidden" Properties(0).Value = True Properties(1).Name = "FilterName" Properties(1).Value = "Text - CSV" cvs_quotes = StarDesktop.LoadComponentFromUrl("http://finance.yahoo.com/d/quotes.csv?s=GOOG&f=nl1&e=.csv", "_blank", 0, Properties()) Dane = cvs_quotes.Text.String cvs_quotes.close(true) 'wstawienie pobranych danych po usunięciu znaku nowej lini ThisComponent.Sheets.getByName("Arkusz1").getCellRangeByName("A1").String = Left(Dane, len(Dane) - 1) End Sub I tu zdefiniowane są elementy tablicy Properties, ale każdy element ma name i value, dodatkowo wcześniej Properties jest zdefiniowany jako: Kod: Dim Properties(1) As New com.sun.star.beans.PropertyValue jak to poskładać do kupy i zmusić Symf do współpracy :D ?? Plis help
|
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |