Supporto VBA in OpenOffice.Org Calc
Pubblicato il 21. Ottobre, 2009 da Krishnan in Ingegneria , Howto , OpenOffice.org , Tips
Per molti anni fino a ieri, sapevo di OpenOffice.Org Calc. Oggi sono entusiasta.
Ho provato OpenOffice molti anni fa. Si potrebbe fare poche cose allora, ma ho subito respinto come inadeguata per le mie esigenze. Sono sempre stato un fan di quello che poteva fare per VBA di Excel.
La settimana scorsa, ho completato il pezzo più complesso di applicazione VBA che avessi mai scritto. Sono un novizio VBA e mi ci volle una settimana per finire il mio codice che potrebbe essere stampato su 28 pagine A4. Il mio foglio di calcolo fino ad oggi funziona perfettamente su XP / Office 2003, come si suppone, ma ho scritto la maggior parte del mio codice in Vista / Office 2007.
Quando ho aggiornato a Debian Squeeze, Openoffice.org 3.1.1 è venuto con esso. Ho controllato la nuova versione ed è stato colpito dal fatto che si potrebbe scrivere macro in Python, Javascript, BeanShell oltre al BASIC.
Ho provato ad aprire il mio pezzo più complesso di codice VBA in Openoffice.org e mi è stato bombardato da centinaia di messaggi di errore ripetitivi che ho dovuto uccidere il foglio di calcolo dalla riga di comando. Ero convinto che VBA e OOoCalc non sono compatibili, finché non ho scoperto questo sito per caso quando si cerca di imparare a scrivere macro in OOo Javascript.
OK. Tutto quello che ho bisogno di aggiungere è "Opzione di supporto VBA 1". Questo non sembrava troppo difficile, così ho cercato di aprire il mio foglio di nuovo e ho dovuto uccidere ancora tutto da riga di comando.
Qualche cosa non era giusto e non ero in grado di eseguire VBA, nonostante la compatibilità promessa.
Così ho deciso di andare piano. Non importa quante volte, non ho potuto eseguire le macro quando ho aperto il file nativo excel. Così ho deciso di aprire il file excel con le macro disattivate. Che mi ha fatto aprire il foglio di calcolo, ma nulla è stato di lavoro. Ho scoperto che OOoCalc automaticamente aveva aggiunto "Opzione di supporto VBA 1" per i miei moduli.
Ho salvato il file come. ODS e ha proceduto a eseguire il debug delle macro, consentendo di nuovo. Questa volta, gli errori non sono disponibili in una flood.They è venuto uno alla volta ed era più facile eseguire il debug.
La prima serie di errori relativi alle variabili che non hanno una dichiarazione esplicita Dim. VBA in Excel sembrava più indulgenti nel trattare varaibles senza adeguate istruzioni Dim. Ma OOo Calc non piaceva. Così ho finito per l'aggiunta di alcune affermazioni Dim per alcune variabili.
La prossima serie di errori era con Excel nomi UDF. OOo Calc piace vedere Funzioni essere invocate con lettere maiuscole. Quindi, se avessero usato le lettere minuscole in Excel, si rivelerebbe come errori. Questo potrebbe essere facilmente risolto con l'uso della funzione Trova e sostituisci.
Con solo queste due cose, fisso il mio nuovo file. ODS ha funzionato perfettamente. Ho poi salvato come. Xls e riaperto i xls e tutto era ancora in funzione. Anche se la documentazione OOo Calc dice ancora che non tutte le funzioni sono supportate VBA, VBA funziona bene su OOoCalc per tutti i calcoli di ingegneria pratici. Quindi ora è il momento per me di fare lo switch.
Ora, se avete difficoltà, a ottenere il vostro codice VBA per lavorare in OOo Calc, dont rinunciare al più presto.

Related posts:


















































Rakesh
07. Nov, 2009
Ciao,
Ho provato a fare quello che u hanno detto, ma ancora non funziona.
se SHEET1.CELLS (7, 4) = "" Or SHEET1.CELLS (9, 4) = "" Or SHEET1.CELLS (10, 4) = ""
In questa linea sto ottenendo proprietà o metodo non trovato.
Krishnan
09. Nov, 2009
La sintassi corretta è, ovviamente, come posso vedere.
Se, poi, Else sono le parole chiave da utilizzare. Non Or.
Giacomo
07. Feb, 2010
ingnoring "rem"
come si farebbe proprio questo in OOo? i lavori sopraelevazione in OOo - pls fatemi parlare?
Rem Parole sub ()
Rem '
Rem 'Parole Macro
Macro Rem 'registrato 2010/07/02 dal proprietario
Rem '
Tastiera Rem 'di scelta rapida: Ctrl + w
Rem '
Rem Dim NumWords As Integer
Rem wordlength Dim As Integer
Rem Dim Count As Integer
Rem Dim Count2 As Integer
Rem As Integer Dim LCase
Rem
Rem Dim Word As String
Rem As String Dim MixedWord
Rem Dim Lettera As String
Rem
Rem 'Worksheets ("Words"). Attiva
Rem
Rem Set wordRange = Worksheets ("Words") Range ("A1: A500").
Rem NumWords = Application.WorksheetFunction.CountA (wordRange)
Rem
Rem Per Count = 1 To NumWords
Rem wordlength = Len (Cells (Count, 1))
Rem
Rem
Rem 'Application.EnableSound = False
Rem
Rem 'Application.EnableSound = True
Rem = Cells (Word Count, 1)
Rem 'Cells (Count, 1). Attiva
Rem 'ActiveCell.Characters (1, 3). PhoneticCharacters = Word
Rem MixedWord = ""
Rem Per Count2 = 1 To lunghezza della parola
Rem Lettera = Mid (Cells (Count, 1), Count2, 1)
Rem 'Application.Speech.Speak (Letter)
Rem LCase = Round (Rnd)
Rem
Rem
Rem Se LCase = 1 And Asc (Lettera)> = 97 Poi Lettera = Chr (Asc (Letter) - 32)
Rem
Rem MixedWord = MixedWord + Letter
Rem Avanti Count2
Rem Cells (1, 5) = MixedWord
Rem
Rem Messaggio Dim, Title, Default, MyValue
Rem Message = "Monkey Ready?"
Rem Title = "Honors gioco spelling".
Rem Default = "YES"
Rem MyValue = InputBox (Message, Title, Default)
Rem
Rem
Rem Per Count2 = 1 To lunghezza della parola
Rem Lettera = Mid (Cells (Count, 1), Count2, 1)
Rem Application.Speech.Speak (Letter)
Rem Avanti Count2
Rem Application.Speech.Speak (Word)
Rem
Rem Se MyValue "SI" allora
Rem Application.Speech.Speak ("E 'sbagliato Pooey - hai inserito")
Rem wordlength = Len (MyValue)
Rem Per Count2 = 1 To lunghezza della parola
Rem Lettera = Mid (MyValue, Count2, 1)
Rem Application.Speech.Speak (Letter)
Rem Avanti Count2
Rem Application.Speech.Speak (MyValue)
Rem End If
Rem
Rem
Rem Conte Avanti
Rem
Rem
Rem End Sub
Rem