Supporto VBA in OpenOffice.Org Calc

Pubblicato il 21. Ottobre, 2009 da 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:

  1. Excel Guide
  2. collegamenti per 2010/06/30

3 Responses to "supporto VBA in OpenOffice.Org Calc"

  1. 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.

  2. Krishnan

    09. Nov, 2009

    La sintassi corretta è, ovviamente, come posso vedere.

    Se, poi, Else sono le parole chiave da utilizzare. Non Or.

  3. 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

Lascia un commento