[RESUELTO]Pasar Macro de Excell a Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

[RESUELTO]Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Quisiera pasar una macro de Excell a Calc o dejo cual

Sub CodigoPrograma
Rem
Rem Dim mes As Integer, DefSus As Integer
Rem Dim Contador As Integer
Rem Dim A As Integer
Rem Dim Hojas As Integer
Rem Dim NombreHojas As String
Rem Dim NuevoNombre As String
Rem
Rem Public Sub CopyDeferred1()
Rem If Hoja6.Visible = xlSheetVisible Then
Rem Hojas = 6
Rem Else
Rem Hojas = 5
Rem End If
Rem For A = 1 To Hojas
Rem Sheets("Semana " & A).Select
Rem Range("I8:I18").Select
Rem ActiveCell.FormulaR1C1 = "=SUM(RC[-7]:RC[-1])"
Rem Next A
Rem Application.Goto Reference:="PlantillaDeferred"
Rem Selection.Copy
Rem For A = 1 To Hojas
Rem Sheets("Semana " & A).Select
Rem Range("O1").Select
Rem ActiveSheet.Paste
Rem Next A
Rem End Sub
Rem
Rem Public Sub CopyDeferred2()
Rem 'Con esta sección nos aseguramos de tener la hoja
Rem '"ACUMULADO" con datos "buenos"
Rem Hoja7.Activate
Rem Range("B9:H20,P9:R20,S9:S18,T9:T17,U9:U16,V9:V15,W9:W14,X9:X13,Y9:Y12,Z9:Z11,AA9:AA10,AB9").Select
Rem Selection.FormulaR1C1 = _
Rem "='Semana 1'!RC+'Semana 2'!RC+'Semana 3'!RC+'Semana 4'!RC+'Semana 5'!RC+'Semana 6'!RC"
Rem Range("B6").Select
Rem 'Copia y pega valores correspondientes al mes en curso
Rem Dim RangoMes As Range, Rmeses As Range
Rem HojaSusc.Activate
Rem For mes = 0 To 11
Rem If Cells(2, 3).Value = Cells(7 + mes, 3).Value Then
Rem For DefSus = 51 To 381 Step 30
Rem Set Rmeses = Range(Cells(DefSus + mes, 4), _
Rem Cells(DefSus + mes, 31))
Rem Rmeses.Copy
Rem Rmeses.PasteSpecial (xlPasteValues)
Rem Next DefSus
Rem Exit For
Rem End If
Rem Next mes
Rem Range("C1").Select
Rem End Sub
Rem
Rem Public Sub NuevaFecha()
Rem 'Coloca la nueva fecha en lugar de la antigua
Rem HojaRangos.Visible = xlSheetVisible
Rem HojaRangos.Activate
Rem Range("FechaSig").Copy
Rem Range("Fecha").PasteSpecial (xlPasteValues)
Rem End Sub
Rem
Rem Public Sub Acoplador()
Rem 'Copia la plantilla de la hoja oculta "Rangos"
Rem 'Borra todos los datos
Rem Application.Goto Reference:="Plantilla"
Rem Selection.Copy
Rem For A = 1 To 5
Rem Sheets("Semana " & A).Select
Rem Range("A1").Select
Rem ActiveSheet.Paste
Rem Next A
Rem Application.Goto Reference:="SemanaStand"
Rem Selection.Copy
Rem For A = 2 To 4
Rem NombreHojas = "Semana " & A
Rem Sheets(NombreHojas).Select
Rem Range("B5").Select
Rem ActiveSheet.Paste
Rem Next A
Rem 'Acopla el principio de mes
Rem Hoja1.Activate
Rem For Contador = 1 To 6
Rem If Cells(5, 8 - Contador) = 0 Then
Rem Cells(5, 8 - Contador).Select
Rem Selection.EntireColumn.Hidden = True
Rem End If
Rem Next Contador
Rem '
Rem Hoja2.Range("I2").Value = "Semana 2"
Rem Hoja2.Activate
Rem Range("B6").Select
Rem '
Rem Hoja3.Range("I2").Value = "Semana 3"
Rem Hoja3.Range("B5").Formula = "='Semana 2'!$H$5+1"
Rem Hoja3.Activate
Rem Range("B6").Select
Rem '
Rem Hoja4.Range("I2").Value = "Semana 4"
Rem Hoja4.Range("B5").Formula = "='Semana 3'!$H$5+1"
Rem Hoja4.Activate
Rem Range("B6").Select
Rem 'Código de la Semana 5
Rem Application.Goto Reference:="Semana5"
Rem Selection.Copy
Rem Hoja5.Activate
Rem Range("B5").Select
Rem ActiveSheet.Paste
Rem Hoja5.Range("I2").Value = "Semana 5"
Rem For Contador = 3 To 8
Rem If Cells(5, Contador) = 0 Then
Rem Cells(5, Contador).Select
Rem Selection.EntireColumn.Hidden = True
Rem End If
Rem Next Contador
Rem Range("B6").Select
Rem 'Código de la Semana 6
Rem Application.Goto Reference:="Plantilla"
Rem Selection.Copy
Rem Hoja6.Visible = xlSheetVisible
Rem Hoja6.Select
Rem Range("A1").Select
Rem ActiveSheet.Paste
Rem Application.Goto Reference:="Semana6"
Rem Selection.Copy
Rem Hoja6.Select
Rem Range("B5").Select
Rem ActiveSheet.Paste
Rem Hoja6.Range("I2").Value = "Semana 6"
Rem
Rem If HojaRangos.Range("$AI$21") > 0 Then
Rem If Hoja6.Range("C5") > 0 Then
Rem Columns("D:H").Select
Rem Else
Rem Columns("C:H").Select
Rem End If
Rem Selection.EntireColumn.Hidden = True
Rem Range("B6").Select
Rem Else
Rem If Hoja6.Visible = xlSheetHidden Then
Rem Hoja6.Visible = xlSheetVisible
Rem End If
Rem Hoja6.Select
Rem Range("B8:C18").Select
Rem Selection.ClearContents
Rem Hoja6.Visible = xlSheetHidden
Rem End If
Rem End Sub
Rem
End Sub


Espero me pueda ayudar.

Mil Gracias ;)
Última edición por pedrito76 el Vie Jul 23, 2010 4:19 pm, editado 1 vez en total.
OpenOffice.org 3.2
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Nadie me puede ayudar :? :cry:
OpenOffice.org 3.2
Avatar de Usuario
RGB-es
Mensajes: 4739
Registrado: Lun Nov 24, 2008 10:46 am
Contactar:

Re: Pasar Macro de Excell a Calc

Mensaje por RGB-es »

¡Un poco de paciencia! Has publicado la pregunta apenas ayer (un domingo...)
Esto es un foro de y para usuarios, no un servicio técnico. Si no lo has hecho aún por favor lee la Guía de supervivencia.
Lo más probable es que en lugar de «traducir» la macro lo mejor sea que la reescribas desde cero, teniendo en claro qué es lo que debes hacer.
Tienes un magnífico libro escrito por nuestro moderador Mauricio que te servirá de introducción a la programación de macros en OOo: Apuntes de OOo Basic
No respondo mensajes privados sobre AOO/LibO, por favor, utilice el foro para sus preguntas

LibreOffice en openSUSE con escritorio Plasma
---
Existen dos clases de personas: las que dicen que existen dos clases de personas y las que no.
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Hola Chicos de nuevo,

no se si la verdad la macro que os he puesto, que es bastante larga la verdad, se puede pasar a OOo Basic.

En fin estoy ultimamente un poco :ucrazy: con tanta macro.... jejejeje además tengo que decir que soy novato en ello.

Saludos,
Pedro
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Pasar Macro de Excell a Calc

Mensaje por mauricio »

Hola...

Es larga pero es muy repetitiva, y todas las instrucciones equivalentes en OOo Basic están tratadas con amplitud en mi libro, pero si, requieres un poco de esfuerzo para leer, analizar y estudiar la migración, como recomendación, NO es necesario usar los métodos select, es un mal hábito de los que aprendieron a programar con al grabadora de macros.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Yo la verdad que no es una macro creada por mi, yo soy más bien novel y claro al verla se me pusieron los ojos como platos :shock: :shock: :shock: la verdad que al no comprender muy bien su estructura, os pido ayuda para que saber como pasarla y que me sirva para OOoBasic.

Mauricio leo tu libro pero ufff!!! cada vez que intento buscar algo o comprender me hago más lio... jejeje que torpe soy :knock:

Gracias
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Pasar Macro de Excell a Calc

Mensaje por mauricio »

Mauricio leo tu libro pero ufff!!! cada vez que intento buscar algo o comprender me hago más lio... jejeje que torpe soy :knock:
Yo diría que eres novato, no torpe, y todos somos novatos alguna vez... el libro esta pensado para ir paso a paso desde cero, pero veo que eres un poco impaciente, lo cual no es una virtud ni para el autodidacta ni para el programador, te invito a empezarlo desde el inicio y publicar tus dudas puntuales en este foro o en las listas de correo para ayudarte...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Ok

Así lo are

De nuevo Muchas Gracias, por tu libro y ayuda prestada ante las dudas :super:
OpenOffice.org 3.2
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Hola de nuevo,

He resuelto muchas de las partes de la macro a pasar, pero hay un trozo que no me sale ni a la de tres y no se donde puede estar el error :crazy:

Si me podéis ayudar os lo agradecería, os pongo el trozo


If HojaRangos.Range("$AI$21") > 0 Then
If Hoja6.Range("C5") > 0 Then
Columns("D:H").Select
Else
Columns("C:H").Select
End If
Selection.EntireColumn.Hidden = True
Range("B6").Select

Else
If Hoja6.Visible = xlSheetHidden Then
Hoja6.Visible = xlSheetVisible
End If
Hoja6.Select
Range("B8:C18").Select
Selection.ClearContents
Hoja6.Visible = xlSheetHidden
End If

Sobre todo la parte en rojo es la que me trae de cabeza :ucrazy: :crazy:

Gracias compañeros :super:
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Pasar Macro de Excell a Calc

Mensaje por mauricio »

Hola...

Las instrucciones equivalentes son las siguientes, TODAS, están extensamente tratadas en mi libro, te muestro el capitulo donde están. Nota que no hemos usado para nada Select, es un mal hábito.

Código: Seleccionar todo

Option Explicit

Sub Main
Dim HojaRangos As Object
Dim Hoja6 As Object
Dim sCol As String

	'Capitulo 6.1
	HojaRangos = ThisComponent.getSheets.getByName("Hoja1")
	Hoja6 = ThisComponent.getSheets.getByName("Hoja6")

	'If HojaRangos.Range("$AI$21") > 0 Then	
	'Capitulo 6.2 y 6.4.1
	If HojaRangos.getCellRangeByName("AI21").getValue() > 0 Then
		'If Hoja6.Range("C5") > 0 Then
		If Hoja6.getCellRangeByName("C5").getValue() > 0 Then
			'Columns("D:H").Select
			sCol = "D1:H1"
		Else
			sCol = "C1:H1"
			'Columns("C:H").Select			
		End If
		'Selection.EntireColumn.Hidden = True
		'Capitulo 6.5.2
		HojaRangos.getCellRangeByName( sCol ).getColumns.IsVisible = False
		'Range("B6").Select
	Else
		'If Hoja6.Visible = xlSheetHidden Then
		'Capitulo 6.1.6
		If Not Hoja6.isVisible Then
			'Hoja6.Visible = xlSheetVisible
			Hoja6.isVisible = True
		End If
		'Hoja6.Select
		'Range("B8:C18").Select
		'Selection.ClearContents
		'Capitulo 6.4.3
		Hoja6.getCellRangeByName( "B8:C18" ).clearContents( 21 )
		
		'Hoja6.Visible = xlSheetHidden
		Hoja6.isVisible = False
	End If

End Sub
Si no lo has hecho aún por favor lee la Guía de supervivencia. Si tienes más dudas puntuales, trata de abrir otro tema pues si no este se haría interminable.

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Gracias Mauricio de nuevo por tu ayuda, pero... sigue sin salirme porque no consigo casar esta parte con la que me has dicho.

'Código de la Semana 6
Rem Application.Goto Reference:="Plantilla"
Rem Selection.Copy
Rem Hoja6.Visible = xlSheetVisible
Rem Hoja6.Select
Rem Range("A1").Select
Rem ActiveSheet.Paste
Rem Application.Goto Reference:="Semana6"
Rem Selection.Copy
Rem Hoja6.Select
Rem Range("B5").Select
Rem ActiveSheet.Paste
Rem Hoja6.Range("I2").Value = "Semana 6"

Dios mira que pruebo y pruebo y acoplo de mil maneras todo lo que dices en el libro, pero sigo sin dar en la tecla correcta, en fin esto no debe de ser lo mio, yo solo quería hacerlo para tenerlo en mi negocio, pero veo que esto es muy dificil. Seguire en el intento aunque ya me vencio :(
OpenOffice.org 3.2
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

Sigo sin saber como hacer para que la hoja6 aparezca y desaparezca si la fecha no corresponde a la actual :cry:

Alguien me puede echar una mano, por favor?

Gracias

Os pongo lo que estoy haciendo:

Sub OcultarHoja6()

Dim Hoja6 As Object

Hoja6 = ThisComponent.getSheets.getByName("Semana 6")

If Hoja6.getCellRangeByName("D5").getValue() > 0 Then

Hoja6 = ThisComponent.getSheets().getByIndex(6)
Hoja6.isVisible = Not Hoja6.isVisible

Else
End If

End Sub
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO]Pasar Macro de Excell a Calc

Mensaje por mauricio »

Hola...

Compañero, no habrás un tema que ya has marcado como resuelto, es probable que no se le preste atención, si no lo has hecho aún por favor lee la Guía de supervivencia

La siguiente macro hace más o menos lo que quieres:

Código: Seleccionar todo

Option Explicit

Sub HojaVisible()
Dim sHoja As String
Dim sCelda As String
Dim oHoja As Object
Dim oCelda As Object
Dim Fecha As Date

	'El nombre de la hoja
	sHoja = "Semana 6"
	'El nombre de la celda a evaluar
	sCelda = "D5"

	
	oHoja = ThisComponent.getSheets.getByName( sHoja )
	oCelda = oHoja.getCellRangeByName( sCelda )
	Fecha = oCelda.getValue()
	
	'Si la Fecha es mayor a la actual
	If Fecha > Date then
		oHoja.IsVisible = False
	Else
		oHoja.IsVisible = True
	End If

End Sub
la hoja6 aparezca y desaparezca si la fecha no corresponde a la actual
Para que la fecha no corresponda, puede ser mayor o menor, en mi ejemplo asumo que es mayor, si tu condición es menor solo invierte el operador (>), observa que solo tienes que adaptar las primeras variables para adaptarlas a tus necesidades:

Código: Seleccionar todo

	'El nombre de la hoja
	sHoja = "Semana 6"
	'El nombre de la celda a evaluar
	sCelda = "D5"
Por favor, si tienes más dudas, abre un nuevo tema con el problema especifico.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: [RESUELTO]Pasar Macro de Excell a Calc

Mensaje por pedrito76 »

mauricio escribió:
Compañero, no habrás un tema que ya has marcado como resuelto
Hola Compañero,

Simplemente lo abrí porque aun no estaba resuelto cuando os propuse ayuda, pero después de tanto probar y hacer, conseguí resolverlo y por eso después lo abrí de nuevo para editar y poder poner que estaba RESUELTO.
OpenOffice.org 3.2
Responder