Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 30. 12. 2012 14:54:24

Maroslav
Člen
Registrace: 30. 12. 2012
Příspěvků: 2

Čtení z buňky v externí Aplikaci pomocí VBA - VYŘEŠENO

Dobrý den,

píšu makro v jazyce VBA for application pro externí CAD aplikaci, potřeboval bych načítat hodnoty z buněk z dokumenty OO calc. Mám hotovou část kódu, ale nemůžu se nějak "odpíchnout" dál. Nejsem profesionální programátor tak možná je v kódu jen nějaké blbost. Našel by se někdo kdo má s OO více zkušeností prosím???

Díky

Sub reading_value()
Dim oSM
Dim oDesk As Object
Dim oDoc As Object
Dim oSheet As Object
Dim arg()

Set oSM = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
Set oDoc = oDesk.loadComponentFromURL("file:///C:\Alphacam\LICOMDIR\Technologie\Technologie.ods", "_blank", 0, ar())
oDoc.Close (True)
Set oDoc = Nothing
Set oSheet = oDoc.getSheets().getByName("Sheet1")   ' get by name
Set oCell = oSheet.getCellByPosition(1, 1)
'
nValue = oCell.getValue()
MsgBox "nValue"
End Sub

_________________________________________________
Značím jako vyřešené

;o)

Editoval sedlacekdan (9. 1. 2013 19:31:47)

Offline

#2 30. 12. 2012 17:07:25

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Čtení z buňky v externí Aplikaci pomocí VBA - VYŘEŠENO

Určitě je to zajímavá a záslužná činnost. Ale nejprve by mne (a nejen mne) zajímalo proč neuložíte ten Calc jako XLS. Pak už tento problém existovat nebude.
   První co mne napadne, že byste měl volat UNO, ale vzhledem k tomu, že voláte z Excelu netuším kde je chyba. Podpora Excelovských maker funguje omezeně, ale podobné volání by se mělo podařit.
   I když tohle asi nevyřeším, tak by mne řešení zajímalo. Určitě by jste se měl při úspěchu podělit o návod jak je odf průchodný pro VBA.
   Také asi naznačujete, že voláte pomocí VBA zřejmě proto, že je implementovaný do vstupů pro CAD. Není tam nějaký přímý postup pro odf?


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 30. 12. 2012 17:18:28

Maroslav
Člen
Registrace: 30. 12. 2012
Příspěvků: 2

Re: Čtení z buňky v externí Aplikaci pomocí VBA - VYŘEŠENO

Dobrý den,
uložit soubor do XLS je samozřejmě řešení, ale jen v případě že makro spouštím na PC kde je nainstalován Microsoft office (pro Excel mám již podobné makro hotové) používám knihovnu objektů Microsoft office a myslím že bez instalace balíku Office není možné tyto objekty použít.
Provházel jsem spoustu fór a manuálů ale nic moc mi extra nefunguje sad

Offline

#4 1. 1. 2013 14:27:56

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Čtení z buňky v externí Aplikaci pomocí VBA - VYŘEŠENO

Vítejte na fóru,
Já bych viděl ten problém zde:

Maroslav napsal(a)
Set oDoc = oDesk.loadComponentFromURL("file:///C:\Alphacam\LICOMDIR\Technologie\Technologie.ods", "_blank", 0, ar())
oDoc.Close (True)
Set oDoc = Nothing
Set oSheet = oDoc.getSheets().getByName("Sheet1")   ' get by name
Set oCell = oSheet.getCellByPosition(1, 1)

Makro otevřelo  dokument Technologie.ods a ihned ho zase zavřelo. Pak je do proměnné oDoc je přiřazena hodnota Nothing (pokud není jinde definována, tak je to 0). Proměnná oDoc tedy již není dokumentem Technologie.ods
Pak chcete aby se definoval list (oSheet) ale ten teď vychází z nuly.
Zkuste prohodit řádky takto:

Set oDoc = oDesk.loadComponentFromURL("file:///C:\Alphacam\LICOMDIR\Technologie\Technologie.ods", "_blank", 0, ar())
Set oSheet = oDoc.getSheets().getByName("Sheet1")   
Set oCell = oSheet.getCellByPosition(1, 1)
nValue = oCell.getValue()
oDoc.Close (True)
MsgBox "nValue"
End Sub

Zavřít dokument můžete teprve tehdy, co jste definoval a získal požadované proměnné a hodnoty.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí