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.
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
-
ModeradorHola,
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-
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 -
¡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! -
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
-
-
Re,
Mi problema es que estoy en nivel 0 en lo básico de Open Office.org.
Sin embargo, sé programar en VBA porque lo aprendí en clase, pero nunca el básico de Open Office.org.
Entonces, ¿podrían ayudarme, por favor? -
Hola lami20j,
¡Espero que mi archivo no te haya cansado mucho! -
Re,
Application.Run("DocAvId") funciona bien en Excel VBA, pero tiene errores en Open OFFICE VBA.
¿Saben por qué?
Gracias. -
Re,
Por cierto, mi función ya no tiene errores en Open Office
de hecho, era necesario declarar las variables dentro de la función y no en el exterior: probé y ahora funciona, queda por ver si funciona en todos lados.
¡Gracias por tu ayuda! -
Re,
¡Gracias!
Pero en realidad es xd el que causa el error. Pensé que la declaración de variables de fechas puede que no sea la misma en Excel que en Open. Pero como soy nulo en programación, no sé muy bien qué hay que hacer. -
ModeradorRe,
Un ejemplo para esta parte
c1 = a_y1(xy) c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7) c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) If c2 = 0 Then If a_y3(xy) = 0 Then c2 = 0 Else c2 = IIf(a_y3(xy) > 3, 52, c2) c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1) End If End If
que se convierte enc1 = a_y1(xy) c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7) c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) If c2 = 0 Then If a_y3(xy) = 0 Then c2 = 0 Else if a_y3(xy) > 3 then 'los valores de c1 y c2 cambian solo si a_y3(xy) > 3 c2 = 52 c1 = a_y1(xy - 1) End If End I
--
106485010510997108 -
Re,
Sabiendo que funciona perfectamente en Excel VBA, solo da error en Open Basic en el cálculo de xd.
De hecho, xd es una fecha, pero no la conozco al principio:
espera, te paso mi función, verás: te he puesto algunos comentarios
Public ty As String, mes As String, sem As String, ys As String, ysj As String, yj As String, xd As Date
' Función de cálculo de intervalo de tiempo de 1998 a 2014
' Código de fecha de la variable xd opcional ( Fecha sistema por defecto )
' En año ty="a" ( Tipo por defecto )
' En año mes ty="amm"
' En semana ty="ss"
' En año semana ty="ass"
' En año semana día ty="assj"
' En año día ty="ajjj"
Public Function datecode(ty, xd)
Dim a_y1, a_y2, a_y3, a_m1, xy, xm, xj, c1, c2
'letra correspondiente al año
a_y1 = Array("K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "A")
'año bisiesto a 1, de lo contrario 0
a_y2 = Array(0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0)
'1er día del año lunes=0
a_y3 = Array(3, 4, 5, 0, 1, 2, 3, 5, 6, 0, 1, 3, 4)
'no cambiar, corresponde al mes
a_m1 = Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
xd = IIf(IsDate(xd), xd, Date)
xy = Year(xd) - 1998
xm = Month(xd)
xj = Day(xd)
xw = WeekDay(xd, vbMonday)
c1 = a_y1(xy)
c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7)
c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3)
If c2 = 0 Then
If a_y3(xy) = 0 Then
c2 = 0
Else
c2 = IIf(a_y3(xy) > 3, 52, c2)
c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1)
End If
End If
mes = Right(Str(xm + 100), 2)
ym = LCase(c1) & mes
c2 = IIf(a_y3(xy) < 4, c2 + 1, c2)
'c1 = IIf(c2 = 53 And a_y3(xy) = 0, a_y1(xy + 1), c1)
'c2 = IIf(c2 = 53 And a_y3(xy) = 0, 1, c2)
sem = Right(Str(c2 + 100), 2)
sem = IIf(sem = "00", "53", sem)
ys = c1 & sem
ysj = ys & xw
yj = LCase(c1) & c3
ty = LCase(ty)
datecode = c1
datecode = IIf(ty = "amm", ym, datecode)
datecode = IIf(ty = "ss", sem, datecode)
datecode = IIf(ty = "ass", ys, datecode)
datecode = IIf(ty = "assj", ysj, datecode)
datecode = IIf(ty = "ajjj", yj, datecode)
End Function
-
ModeradorRe,
lo haré un poco más tarde si no te molesta.
No hay problemas.
De hecho, no necesitas el else. Simplemente hay que comprobar si xd es una fecha o no
Aquí tienes dos ejemplos
xd no es una fechaSub date1() Dim xd xd = "hola" If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub
xd es una fechaSub date2() Dim xd xd = #1/1/2009# If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub
--
106485010510997108 -
xd = If IsDate(xd) Then xd Else Date
-
ModeradorRe,
Bueno, voy a probar en casa esta noche.
Sin embargo, me dices que hay macros que no podré ejecutar: tendrás que decirme cuáles son, así no me romperé la cabeza sin necesidad.
Tampoco me dijiste el error que obtienes.
De hecho, podrías decirme exactamente (en orden) lo que haces y dónde se encuentra el problema.
--
106485010510997108 -
Re,
espero que te encuentres bien. No es un archivo fácil de tratar. -
De hecho, yo los descargo de un sitio intranet; lamentablemente no podrás hacerlo porque necesitas una contraseña y no puedo dártela ya que yo tampoco la tengo.
-
Dans DocAv2_DocAv3 ejecuta la macro Sub DocAvR2() eliminando o no los comentarios y luego puedes ejecutar las otras macros si es necesario.
Sin embargo, hay macros que no podrás ejecutar porque están vinculadas a sitios web y contraseñas, así que es imposible que funcionen (no tengo acceso a la contraseña, lo siento), este es el caso de todas las macros que contienen archivos .jsp. -
ModeradorRe,
Otra cosa.
¿Cómo obtienes estos archivos csv?
--
106485010510997108 -
ModeradorRe,
puedes intentar ejecutar las macros del docAv paso a paso y luego verás.
Debe haber un orden de ejecución, supongo.
Veo los módulos
DocAv
DocAv1n
DocAv2_DocAv3
etc.
Los módulos contienen procedimientos y funciones.
¿Cuáles debo ejecutar?!
--
106485010510997108 -
Hola,
Te he dado una verdadera caja de sorpresas, así que puedes intentar ejecutar las macros del docAv paso a paso y luego verás. En los 2 primeros csv no hay problemas, pero es la tercera la que falla.
Si quieres más detalles, ¡no dudes en preguntar! -
trocer archivo csv http://host01.pipebytes.com/get.php?key=10147654546867
-
ModeradorRe,
El tercer archivo no pasa.
Hay algo que no entiendo.
Tus archivos CSV solo contienen un único campo.
No veo dónde está el problema.
Para entender tu problema, necesitas decirme qué haces y también decirme los errores que encuentras.
--
106485010510997108 -
Je suis désolé, mais je ne peux pas traiter ce type de contenu.
- 1
- 2
- 3
Siguiente