Soutien de VBA dans OpenOffice.Org Calc

Posté le 21. Oct, 2009 par en ingénierie , Howto , OpenOffice.org , Conseils

Depuis de nombreuses années jusqu'à hier, je savais à propos OpenOffice.Org Calc. Aujourd'hui, je suis excité à ce sujet.

J'ai essayé OpenOffice il ya plusieurs années. Il pourrait faire des choses peu à l'époque, mais j'ai tout de suite rejeté comme insuffisante pour mes besoins. J'ai toujours été un fan de ce VBA pourrait faire pour Excel.

La semaine dernière, j'ai terminé la pièce la plus complexe de l'application VBA que je n'avais jamais écrit. Je suis un newbie VBA et il m'a fallu une semaine pour finir mon code qui pourrait être imprimé sur 28 pages A4. Ma feuille de calcul jusqu'à la date fonctionne parfaitement sur XP / Office 2003 comme il est censé le faire, mais j'ai écrit la plupart de mon code dans Vista / Office 2007.

Lorsque je suis passé à Debian Squeeze, Openoffice.org 3.1.1 est venu avec elle. J'ai vérifié la nouvelle version et a été impressionné de voir que l'on pourrait écrire des macros en Python, Javascript, BeanShell, en plus de BASE.

J'ai essayé d'ouvrir ma pièce la plus complexe de code VBA dans Openoffice.org et j'ai été bombardé avec des centaines de messages d'erreur répétitifs que j'ai eu à tuer la feuille de calcul à partir de la ligne de commande. J'étais convaincu que VBA et OOoCalc ne sont pas compatibles, jusqu'à ce que je découvre ce site par hasard en essayant d'apprendre à écrire des macros Javascript dans OOo.

OK. Tout ce que je besoin d'ajouter est "Option VBA Support 1". Cela n'a pas semblé trop difficile, alors j'ai essayé d'ouvrir ma feuille de calcul à nouveau et a dû à nouveau tuer tout en ligne de commande.

Quelque chose n'allait pas et je n'étais pas en mesure d'exécuter VBA, malgré la compatibilité promise.

J'ai donc décidé d'aller lentement. Peu importe combien de fois, je ne pouvais pas exécuter les macros lorsque j'ai ouvert le fichier Excel natif. J'ai donc décidé d'ouvrir le fichier Excel avec des macros désactivés. Ce laissez-moi ouvrir la feuille de calcul, mais rien ne fonctionnait. J'ai trouvé que OOoCalc automatiquement avait ajouté "Option VBA Support 1" à mes modules.

J'ai sauvé le fichier en tant que. ODS et a procédé à déboguer en permettant des macros. Cette fois, les erreurs ne sont pas venus dans un flood.They vint un à la fois et il était plus facile à déboguer.

La première série d'erreurs liées à des variables qui n'ont pas une déclaration explicite Dim. VBA dans Excel semblait plus tolérant dans le traitement des varaibles sans véritables instructions Dim. Mais OOo Calc ne l'aiment pas. Donc j'ai fini par ajouter quelques déclarations Dim pour certaines variables.

La prochaine série d'erreurs était avec des noms UDF Excel. OOo Calc aime voir Fonctions d'être invoquées par des lettres majuscules. Donc, si vous aviez utilisé les lettres minuscules dans Excel, ils apparaissent comme des erreurs. Cela pourrait être facilement corrigé par l'utilisation de rechercher et remplacer fonctionnalité.

Avec seulement ces deux choses, fixé mon nouveau fichier. ODS a parfaitement fonctionné. J'ai ensuite enregistré en tant que. Xls et re-ouvert les xls. Et tout ce qui était encore de travail. Bien que OOo Calc documentation dit encore que toutes les fonctionnalités sont prises en charge VBA, VBA fonctionne bien sur OOoCalc pour tous les calculs d'ingénierie pratiques. Donc, le moment est venu pour moi de faire le changement.

Maintenant, si vous avez des difficultés, dans l'obtention de votre code VBA pour travailler dans OOo Calc, ne donnent pas bientôt.

Related posts:

  1. Howtos Excel
  2. Liens pour 30/06/2010

3 Responses to "support de VBA dans OpenOffice.Org Calc"

  1. Rakesh

    07. Nov, 2009

    Salut,
    J'ai essayé de faire ce que tu l'ai mentionné, mais encore il ne fonctionne pas.
    si SHEET1.CELLS (7, 4) = "" Ou SHEET1.CELLS (9, 4) = "" Ou SHEET1.CELLS (10, 4) = ""

    Dans cette ligne, je reçois la propriété ou méthode introuvable.

  2. Krishnan

    09. Nov, 2009

    La syntaxe est manifestement erronée que je peux voir.

    Si, then, else sont les mots-clés pour être utilisés. Non Ou.

  3. Jacques

    07. Feb, 2010

    ingnoring l'"rems"
    comment feriez-vous à droite de cette dans OOo? i cant travail sur OOo - pls me lancer?
    Rem mots sub ()
    Rem '
    Rem 'Macro mots
    Macro Rem 'a enregistré par le propriétaire 02/07/2010
    Rem '
    Raccourci clavier Rem ': Ctrl + w
    Rem '
    Rem Dim NumWords As Integer
    Rem longueur de mot Dim As Integer
    Rem comte Dim As Integer
    Rem Dim COUNT2 As Integer
    Rem Dim Lcase As Integer
    Rem
    Rem Parole Dim As String
    Rem Dim MixedWord As String
    Rem Dim Lettre As String
    Rem
    Feuilles de Rem '("Words"). Activer
    Rem
    Rem Set wordRange = Worksheets ("Words") Range ("A1: A500").
    Rem NumWords = Application.WorksheetFunction.CountA (wordRange)
    Rem
    Rem Pour Count = 1 Pour NumWords
    Rem longueur de mot = Len (Cells (comte, 1))
    Rem
    Rem
    Rem 'Application.EnableSound = False
    Rem
    Rem 'Application.EnableSound = True
    Rem mots = cellules (le comte, 1)
    Cellules Rem '(Comte, 1). Activer
    ActiveCell.Characters Rem '(1, 3). PhoneticCharacters = Parole
    Rem MixedWord = ""
    Rem Pour COUNT2 = 1 To longueur de mot
    Rem Lettre = Mid (Cellules (comte, 1), COUNT2, 1)
    Rem 'Application.Speech.Speak (Lettre)
    Rem Lcase = Round (Rnd)
    Rem
    Rem
    Rem Si Lcase = 1 et l'ASC (Lettre)> = 97 Puis Lettre = Chr (Asc (Lettre) - 32)
    Rem
    Rem MixedWord = MixedWord + Lettre
    Rem Suivant COUNT2
    Les cellules rem (1, 5) = MixedWord
    Rem
    Rem message Dim, Titre, par défaut, MyValue
    = Message Rem "Monkey Prêt?"
    Rem Titre = "jeu d'orthographe honneurs."
    Rem par défaut = "YES"
    Rem MyValue = InputBox (Message, Titre, par défaut)
    Rem
    Rem
    Rem Pour COUNT2 = 1 To longueur de mot
    Rem Lettre = Mid (Cellules (comte, 1), COUNT2, 1)
    Rem Application.Speech.Speak (Lettre)
    Rem Suivant COUNT2
    Rem Application.Speech.Speak (Word)
    Rem
    Rem Si MyValue "OUI" Puis
    Rem Application.Speech.Speak ("C'est pooey tort - que vous avez entré")
    Rem longueur de mot = Len (MyValue)
    Rem Pour COUNT2 = 1 To longueur de mot
    Rem Lettre = Mid (MyValue, COUNT2, 1)
    Rem Application.Speech.Speak (Lettre)
    Rem Suivant COUNT2
    Rem Application.Speech.Speak (MyValue)
    Fin Rem Si
    Rem
    Rem
    Rem comte Suivant
    Rem
    Rem
    Fin Rem Sous
    Rem

Laisser un commentaire