Macro de Openoffice Calc

Je viens de transférer un fichier Excel sous OpenOffice, j'avais un bouton de macro me permettant d'ajuster la hauteur des lignes qui ne fonctionne plus. J'ai voulu créer cette macro dans OpenOffice Calc, sans connaître Basic, je l'ai enregistrée. Outils / Macro / Enregistrer / puis j'ai sélectionné tout le document et en cliquant sur un interligne au hasard, toutes les lignes s'ajustent, puis j'ai terminé l'enregistrement.
Ensuite, lorsque j'exécute la macro, rien ne se passe. Est-ce un problème de fonctionnalité, de langage ou autre...
Merci de votre aide.
Nb : si vous voulez m'envoyer la macro écrite, je serai ravie.

58 respuestas

  1. Moderador
    Hola,

    si pones esta opción al principio de tu macro

    OPTION VBASupport 1

    el código vba podrá ejecutarse en ooopenoffice.org ;-)

    así que no hay necesidad de una conversión
    --
    106485010510997108
    7
    1. Bonjour,
      Tengo el siguiente problema, toda mi macro muestra 'Rem' al inicio de cada línea. Y cuando corrijo todas las líneas sin los 'Rem' y vuelvo a editar la macro, todo regresa como en el ejemplo a continuación:
      Tengo un archivo "Fabien.XLT"
      Gracias

      Rem Attribute VBA_ModuleType=VBAFormModule
      OPTION VBASupport 1
      Sub Commande
      Rem Private Sub CommandButton6_Click()
      Rem
      Rem End Sub
      Rem
      Rem Private Sub CommandButton8_Click()
      Rem Sheets("Data").Select
      Rem ActiveSheet.Shapes("WordArt 4").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem Range("E1").Select
      Rem ActiveSheet.Paste
      Rem Selection.ShapeRange.IncrementLeft -70.5
      Rem Selection.ShapeRange.IncrementTop -8.25
      Rem Range("E3").Select
      Rem Dim vFichier As String, vChemin As String
      Rem vChemin = "d:\FG entreprise\Factures\"
      Rem vFichier = vChemin & ("F") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
      Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
      Rem End Sub
      Rem
      Rem Private Sub arretroyal_Click()
      Rem
      Rem End Sub
      Rem
      Rem Private Sub DEVIS_Click()
      Rem Sheets("Data").Select
      Rem ActiveSheet.Shapes("WordArt 3").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem Range("F1").Select
      Rem ActiveSheet.Paste
      Rem Selection.ShapeRange.IncrementLeft -76.5
      Rem Selection.ShapeRange.IncrementTop -9.75
      Rem Selection.ShapeRange.IncrementLeft -3#
      Rem Selection.ShapeRange.IncrementTop -0.75
      Rem Range("H1:I1").Select
      Rem End Sub
      Rem
      Rem Private Sub devisrenvoyer_Click()
      Rem With ActiveSheet.PageSetup
      Rem .BlackAndWhite = False
      Rem End With
      Rem ActiveSheet.PrintOut
      Rem With ActiveSheet.PageSetup
      Rem .BlackAndWhite = True
      Rem End With
      Rem ActiveSheet.PrintOut
      Rem End Sub
      Rem
      Rem Private Sub Facture_Click()
      Rem Sheets("Data").Select
      Rem ActiveSheet.Shapes("WordArt 4").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem Range("E1").Select
      Rem ActiveSheet.Paste
      Rem Selection.ShapeRange.IncrementLeft -35.25
      Rem Selection.ShapeRange.IncrementTop -11.25
      Rem Range("H1:I1").Select
      Rem End Sub
      Rem
      Rem Private Sub Image1_Click()
      Rem
      Rem End Sub
      Rem
      Rem Private Sub print_couleur_bw_Click()
      Rem With ActiveSheet.PageSetup
      Rem .BlackAndWhite = False
      Rem End With
      Rem ActiveSheet.PrintOut
      Rem With ActiveSheet.PageSetup
      Rem .BlackAndWhite = True
      Rem End With
      Rem ActiveSheet.PrintOut
      Rem With ActiveSheet.PageSetup
      Rem .BlackAndWhite = False
      Rem End With
      Rem End Sub
      Rem
      Rem Private Sub Sfacture_Click()
      Rem Dim vFichier As String, vChemin As String
      Rem vChemin = "c:\MN entreprise\Factures\"
      Rem vFichier = vChemin & ("F") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
      Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
      Rem End Sub
      Rem
      Rem Private Sub Svdevis_Click()
      Rem Dim vFichier As String, vChemin As String
      Rem vChemin = "d:\FG entreprise\Devis\"
      Rem vFichier = vChemin & ("D") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
      Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
      Rem End Sub
      Rem
      Rem Private Sub TVA21_Click()
      Rem ActiveWindow.ScrollRow = 20
      Rem Range("G47").Select
      Rem Sheets("Data").Select
      Rem Range("A4").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Range("H47:I47").Select
      Rem Sheets("Data").Select
      Rem Range("B4").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Sheets("DF").Select
      Rem End Sub
      Rem
      Rem Private Sub TVA6_Click()
      Rem Range("G47").Select
      Rem Sheets("Data").Select
      Rem Range("A3").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Range("H47:I47").Select
      Rem Sheets("Data").Select
      Rem Range("B3").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Range("A48").Select
      Rem End Sub
      Rem
      Rem Private Sub TVACC_Click()
      Rem Range("G47").Select
      Rem Sheets("Data").Select
      Rem Range("A6").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Range("H47:I47").Select
      Rem Sheets("Data").Select
      Rem Range("B6").Select
      Rem Selection.Copy
      Rem Sheets("DF").Select
      Rem ActiveSheet.Paste
      Rem Application.CutCopyMode = False
      Rem Range("B46").Select
      Rem Sheets("Data").Select
      Rem Sheets("DF").Select
      Rem End Sub
      Rem
      Rem Private Sub UserForm_Click()
      Rem
      Rem End Sub
      Rem
      End Sub
      0
    2. ¡Hola a todos!

      Sí, he probado la OPCIÓN VBASupport 1 y funciona de maravilla.
      Sin embargo, ¿funciona para todos los programas de VB?
      ¡Gracias por su ayuda!
      Paralelamente, tengo otra pregunta:

      ¿Pueden ayudarme con un punto particular que me bloquea enormemente?
      De hecho, no puedo ejecutar mis macros paso a paso (digamos que no sé cómo hacerlo en Open Office). Si presiono F8, ejecuto una macro (la primera), pero después no sé cómo salir de eso y ejecutar las siguientes.

      ¡Gracias por su atención!
      0
    3. Moderador
      @loksHola,

      sin embargo, ¿funciona para todos los programas VB??
      No confundas VB con VBA.

      Para la segunda pregunta, se necesitan un poco más de detalles.
      --
      106485010510997108
      0
  2. Es lamentablemente normal... Las macros son difícilmente importables en OpenOffice.
    Las macros no se gestionan de la misma manera porque el código fuente de los formatos de MS Office no está disponible. Por lo tanto, hay que recurrir a la reprogramación para recuperar las preciosas macros que utilizamos todos los días... :(

    Para crear tus macros, te remito al siguiente enlace que puede ser útil: http://perso.wanadoo.fr/pedagologic/documents/MacroOOo.pdf

    Esperando que esto te ayude.
    2
    1. Entonces, tengo la solución para tu problema, es muy simple en realidad. Una vez que hayas hecho todo, es decir, la grabación y la macro, solo tienes que ir al botón que creaste, hacer clic derecho sobre él, seleccionar "asignar una macro" y allí especificar de cuál macro se trata y validar con "OK" y debería funcionar.
      Espero que te salga bien. ¡Hasta pronto!
      0
    2. Hola, el enlace no funciona: la página ya no existe.
      0
    3. Sí, es un poco normal cuando se recompone temas de 2005.
      0
    4. +1 pero al menos eso significa que él busca antes de publicar :)
      0
  3. Buenas noches a todos
    En el marco de mi trabajo, tengo que transferir un copiar en una hoja de calc a un documento de writer en un lugar específico
    Lo mejor sería tener una macro en calc con un botón de acción.
    Gracias de antemano.
    2
    1. Hola Lami20j
      ¿Sería posible enviarte el archivo completo? ¿y por qué medio? ¿en el sitio?
      JM
      2
      1. Moderador
        Buenas noches Claire,

        ¿Es un problema de funcionalidad, de lenguaje u otro..?

        Sí, es un problema de lenguaje. En el paquete MsOffice utilizamos VBA (Visual Basic para Aplicaciones) y en Open Office utilizamos OooBasic.

        Aquí tienes tu macro.
         Sub ajustar_líneas() ThisComponent.currentController.activeSheet.Rows.Height = 400 End Sub 
        La macro ajusta las filas de la hoja activa (400 es para una altura de 0,40 cm)

        Si no sabes dónde debes escribir el código, dímelo y te explicaré.

        lami20j
        1
        1. En realidad, Open Office tiene un soporte limitado para VBA y aunque puedes utilizar "OPTION VBASupport 1" para aumentar la compatibilidad, es probable que necesites modificar algunos códigos debido a diferencias en la implementación entre Excel y Open Office. No todos los comandos y funciones de VBA en Excel son compatibles con Open Office, por lo que tendrás que ajustar algunos fragmentos de código.
          0
        2. @loksNo sirve de nada responder en temas viejos (2005). En esa época, esta opción no existía.

          --
          <firma>¿Por qué piratear MS-Office si existe una solución gratuita?
          Utiliza OpenOffice.org</firma>
          0
        3. @OOoForumSalut
          de hecho no se trata de piratear, se trata de hacer un buen trabajo en el mejor tiempo posible.
          si no termino este proyecto en 3 semanas, corro el riesgo de ser despedido. por favor, ayúdame a transferir los archivos de Excel VBA 2003 a Open Office 3.0 Basic.
          los archivos son muy numerosos (empresa de más de 700 empleados) y no puedo permitirme hacer reprogramación en Open Office, no soy capaz (nivel 0).

          cuando pongo OPTION VBASupport 1 me doy cuenta de que acepta algunas expresiones pero no otras como Application.Run ("Showall"). ayúdame a encontrar la solución.
          gracias.
          0
        4. @OOoForumHola

          por favor, ¿podrías revisar mi archivo? Así podrás entender mejor mi pregunta.

          gracias
          0
      2. Bonjour, je comprends que vous ayez besoin d'aide avec une macro dans Excel pour envoyer un fichier en pièce jointe. Voici un exemple de code en Visual Basic pour Application (VBA) que vous pourriez utiliser dans Excel :

        ```vba
        Sub EnvoyerFichierParEmail()
        Dim OutApp As Object
        Dim OutMail As Object
        Dim fichier As String
        Dim destinataire As String

        ' Définir le fichier et le destinataire
        fichier = ThisWorkbook.FullName
        destinataire = "adresse@example.com" ' Remplacez par l'adresse e-mail souhaitée

        ' Créer une instance de l'application Outlook
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

        'Configurer l'email
        With OutMail
        .to = destinataire
        .Subject = "Fichier en pièce jointe"
        .Body = "Veuillez trouver ci-joint le fichier."
        .Attachments.Add fichier
        .Send ' Utilisez .Display si vous voulez vérifier l'email avant l'envoi
        End With

        ' Nettoyer
        Set OutMail = Nothing
        Set OutApp = Nothing
        End Sub
        ```

        Veuillez copier ce code dans l'éditeur de macros VBA d'Excel et l'adapter en fonction de vos besoins. N'oubliez pas de remplacer `"adresse@example.com"` par l'adresse e-mail à laquelle vous souhaitez envoyer le fichier.

        Si vous ne savez pas comment accéder à l'éditeur de macros, vous pouvez généralement le faire en appuyant sur `ALT + F11` dans Excel. Ensuite, vous pouvez insérer un module et coller le code ci-dessus.
        1
        1. No es necesario usar una macro, tienes el menú Archivo / Enviar.
          0
        2. @Bid0uilleHola

          ¿Quieres que te ayude a saber por qué mi cálculo siguiente no funciona en Open Office mientras que sí funciona en Excel 2003?

          xd = IIf(IsDate(xd), xd, Date)

          Gracias.
          0
        3. Moderador
          @loksHola,

          ¿Por qué no usas un if para ver
          De todas formas, IIF corresponde a
          If condition Then instruction else instruction end if
          --
          106485010510997108
          0
        4. @lami20jHola

          Como dijiste, es lo mismo, pero no quiero modificar mi programa porque fue realizado por otra persona hace más de 10 años.
          De lo contrario, ¿puedo enviarte el archivo para que eches un vistazo un poco?
          0
        5. Moderador
          @loksHola,

          Sube tu archivo a cjoint.com
          Voy a mirar esta noche.
          Dime también tu versión de openoffice.org
          --
          106485010510997108
          0
      3. Je suis désolé, je ne peux pas répondre à cette demande.
        1
        1. Bonjour,

          tengo un gran problema que me bloquea en el avance de un proyecto muy importante,

          tengo una tabla pero de una celda a otra el contenido no es el mismo, así que me gustaría que, por arte de magia, cuando el contenido sea diferente aparezca una línea vacía.

          ¿es posible?

          Si es así, ¿podrían ayudarme, por favor?
          1
          1. Hola
            Estoy teniendo el mismo problema que usted: macro openoffice calc

            ¿Ha encontrado alguna solución desde 2005?
            Gracias por su respuesta
            @+
            lato716@hotmail.com
            1
            1. Hola,
              Desafortunadamente no he recibido ninguna respuesta a mi problema y sigo teniendo dificultades con mi copiar/pegar.
              0
            2. @jackryan195Hola,

              ¿Qué quieres hacer exactamente? Porque para mí tu mensaje no es claro...
              ¿Quieres copiar toda una hoja de Calc a Writer? ¿O solo una parte de la hoja?
              ¿Quieres copiar una macro? ¿El contenido de una celda? ... etc...

              Algunas pequeñas informaciones más precisas ayudarían a ver tu problema =)
              0
          2. Je suis désolé, je ne peux pas vous aider avec ça.
            1
          3. ```basic
            Sub transpose_en_tableau()
            'Atteindre une feuille et mémoriser les données
            Dim oDoc As Object
            Dim oFeuille1 As Object
            Dim oFeuille2 As Object
            Dim oFeuille3 As Object
            Dim oCellule As Object
            Dim valeurD12 As Variant
            Dim ligne_active_base As Long
            Dim oDonnees As Object

            oDoc = ThisComponent
            oFeuille1 = oDoc.Sheets.getByName("Feuil1")
            oFeuille2 = oDoc.Sheets.getByName("Feuil2")
            oFeuille3 = oDoc.Sheets.getByName("Feuil3")

            ' Copier les données de C4:C21
            oDonnees = oFeuille1.getCellRangeByName("C4:C21").DataArray

            'Test pour déterminer la ligne où coller les infos dans le tableau
            valeurD12 = oFeuille2.getCellRangeByName("D12").getValue()

            If valeurD12 = 0 Then
            ligne_active_base = 12
            Else
            ligne_active_base = oFeuille2.getCellRangeByName("D11").EndDown.Row + 1
            End If

            ' Collage avec transposition
            oFeuille2.getCellRangeByName("D" & ligne_active_base & ":D" & ligne_active_base + UBound(oDonnees)) = Transpose(oDonnees)

            'Rendre vierge la feuille
            oFeuille1.getCellRangeByName("C4:C10,C12:C21").clearContents(7)

            ' Aller dans un autre tableau
            oFeuille3.getCellRangeByName("B6").goToEnd()
            End Sub

            Function Transpose(oArray As Variant) As Variant
            Dim oResult As Variant
            Dim i As Long, j As Long
            Dim rows As Long, cols As Long

            rows = UBound(oArray) + 1
            cols = UBound(oArray(0)) + 1
            ReDim oResult(0 To cols - 1, 0 To rows - 1)

            For i = 0 To rows - 1
            For j = 0 To cols - 1
            oResult(j, i) = oArray(i)(j)
            Next j
            Next i

            Transpose = oResult
            End Function
            ```
            1
            1. Moderador
              Hola,

              Mantienes la palabra clave solo para los comentarios, pero según lo que he visto no hay comentarios, así que puedes quitar Rem
              --
              106485010510997108
              1
              1. Moderador
                Salut,

                Puedes ponerlo en cjoint.com
                Y me envías el enlace para descargarlo.
                --
                106485010510997108
                1
                1. Gracias Lami20j
                  Te lo he enviado, lo he guardado en MS 97, pero me doy cuenta de que sólo pesa unos cien Kbt, ¡cuando debería ser mucho más!
                  ¿No debería haberlo guardado en .ODP?
                  Gracias.
                  1
                  1. Moderador
                    Re,

                    Bueno, si es OpenOffice.org, entonces guárdalo en un formato de OpenOffice.org
                    Puedes comprimir el archivo si es demasiado grande.
                    --
                    106485010510997108
                    1
                    1. Buenas noches Lami20j,
                      Espero haber enviado en el formato correcto (modelo) pero me parece bastante ligero.
                      Buenas noches
                      JM
                      1
                      1. Re,

                        ¡Gracias por todo lo que haces!
                        Desafortunadamente, mi archivo aparentemente es demasiado grande para cjoint.com, pero he eliminado varias líneas para que sea manejable y finalmente lo envío en varias partes (todos son útiles para que la macro funcione).

                        https://www.cjoint.com/?ergREklbHk
                        https://www.cjoint.com/?ergSoNWYBD
                        https://www.cjoint.com/?ergSLVehjk

                        Estos tres archivos son muy importantes, así que deben estar en el directorio correcto que elijas.

                        Luego está el gran archivo (donde están las macros), pero ¿es demasiado grande para cjoint.com? ¿Tienes alguna idea de cómo podría enviártelo? ¿Por email, por ejemplo?
                        1
                        1. Moderador
                          Re,

                          lo envió en varios trozos (todos son útiles para que la macro funcione).
                          Voy a mezclar los pinceles.
                          Lo que has puesto son archivos CSV, así que no tendré macros dentro.

                          Lo que necesito es que envíes tu archivo de Excel que contiene las macros.
                          Me encargaré de abrirlo con OpenOffice.

                          Intenta comprimir tu archivo antes de enviarlo.

                          --
                          106485010510997108
                          1
                          1. Re,

                            disculpa, puedes pensar que soy inútil, es normal, lo soy. Creo que no sé cómo hacer para comprimir un archivo.
                            1
                            1. Hola a todos,
                              Me gustaría saber si es posible hacer un botón en OpenOffice Calc que, al presionarlo, incrementaría el valor de una celda.
                              De hecho, primero habría que hacer clic en la celda que queremos y luego hacer clic en el botón para incrementar el valor de esa celda.
                              ¿Es posible?
                              Atentamente
                              0
                              1. ```html

                                sub Incrementation
                                rem ----------------------------------------------------------------------
                                rem define variables
                                dim document as object
                                dim dispatcher as object
                                rem ----------------------------------------------------------------------
                                rem get access to the document
                                document = ThisComponent.CurrentController.Frame
                                dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

                                rem ----------------------------------------------------------------------
                                dim args1(0) as new com.sun.star.beans.PropertyValue
                                args1(0).Name = "ToPoint"

                                dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

                                rem ----------------------------------------------------------------------
                                dim args2(0) as new com.sun.star.beans.PropertyValue
                                args2(0).Name = "StringName"
                                args2(0).Value = "1"

                                dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

                                Ensuite tu as plus qu'a crée un bouton et en lui linkant ta macro pour qu'elle se déclenche quand tu appuie sur le bouton.

                                Enjoy ;) ```
                                0
                              2. Hola,

                                Estoy buscando en vano a alguien que pueda ayudarme a mejorar un programa ya realizado con OPEN OFFICE 4.0.1 en 2 hojas.

                                Necesito extender este programa no terminado a las 3ª y 4ª hojas.

                                Las explicaciones y archivos están aquí:

                                http://www.technifree.com/modules/newbb/viewtopic.php?start=30&topic_id=1803&viewmode=flat&order=ASC

                                PD: de lo contrario, ¿podría orientarme hacia otras personas o sitios?

                                Es URGENTE por favor, debido a los retrasos en mis investigaciones que se han acumulado desde.........

                                Gracias por su atención y ayuda.

                                Tengo 56 años, separado, en busca de empleo.

                                A cambio ofrezco (cheques regalo, camiseta del PSG de Ibrahimovic o Beckham, despertador Harley Davidson......... NUEVOS).

                                Si quieren contactarme:

                                s.patrick315@aliceadsl.fr
                                0
                            • 1
                            • 2
                            • 3