Preguntas sobre macros y certificados de programación

13/09/2003 - 16:53 por Juan Ignacio | Informe spam
Buenas tardes y perdón por el ladrillazo que os mando.

Un amigo mío me hizo una macro para la oficina que nos ahorra días de
trabajo, si días, pues antes lo hacíamos con funciones buscarV previa
comparación de que en los dos informes se cruzar hubiera los mismos
proveedores ya que podía haber proveedores diferentes (solo algunos) en cada
informe, en cuyo caso teníamos que poner a pedal, (cortar y pegar), el
nombre del proveedor que estuviera en un informe y no estuviera en otro y ya
solo la búsqueda de estos era una locura pues en algunos informes había mas
de 200 proveedores en un año y 240 en otro. El informe se utiliza para
comparar la actividad de un mismo periodo de dos años diferentes, por
ejemplo de enero a marzo del 2002 y mismo periodo del 2003. Es el transcurso
del tiempo pues hay proveedores que se han dado de baja y otros de alta pero
si uno se dio de alta en el segundo periodo necesito que todos los datos del
primer periodo salgan a "0" y viceversa.

Bueno, el caso es que la macro me la protegió para que no la tocaran en la
oficina con una cosa llamada "certificado del programador" yo en casa puedo
ver el código pero en la oficina nadie es capaz de verlo. Lo que yo quería
hacer ahora son algunas cosas, la principal que cada X tiempo o X usos la
macro pida una clave, supongo que lo de pensar en la clave me lo solucionara
mi cuñado que es matemático, pero lo que no se como hacer es que pida la
clave, si alguien me da una idea, aunque yo no la entienda, cuando mi amigo
vuelva se lo paso.

Otro tema, quería hacer dos macros, siempre partiendo de una hoja Excel
que llame al fichero a macrear, que me hicieran lo siguiente, una que
detectara la ultima columna que tuviera datos en alguna celda y a partir de
ahí fuera borrando todas las vacías hacia la izquierda y otra que detectara
la ultima fila con datos en alguna celda y a partir de ahí fuera hacia
arriba borrando las filas vacías. En mi empresa somos todos algo incultos,
yo con Excel me defiendo, con macros no, y el caso es que todos los informes
que antes solo salían impresos ahora salen también en Excel pero para
manejarlos es una locura, cada columna con datos tiene al lado una o dos
vacías, no se el motivo, y después tienen la puñetera manía de meter filas
vacías por medio de los informes, tampoco se el motivo, yo las borro a
pedal pero lleva mucho tiempo, después tengo que convertir el formato
personalizado fecha en numero y después en otra columna al lado volver a
ponerla como fecha, ya que en la que sale en el informe tiene unas comillas
" que impiden que pueda ordenarse, otra cosa que no entiendo. (todos esos
informes salen de una base de datos Oracle).

Si alguien ha tenido la paciencia de leer hasta aquí y aún le queda algo de
paciencia, pues agradecería ideas para los tres temas que pregunto. Hacer
que una clave salte cada X tiempo o usos (supongo que la solución para
darle la clave podría ser sumar la fecha que tenga el ordenador por ejemplo
12/05/2003 sumar todo y daría 2020 y a ese numero sumarle una constante,
ósea otro número cualquiera siempre el mismo o dividir por algún numero y
usar el entero o cualquier chorrada) el problema es hacer que la macro pida
la clave. Y después lo de las otras dos macros que podría ser una sola pero
en el cuadro de dialogo preguntar si borrar filas, columnas o ambas.

Agradezco ideas y hasta invitaría a pasteles para quien me arregle lo de la
macro fila columnas que no se por donde empezar, salvo que lo normal es
empezar de derecha a izquierda y de arriba abajo y no puedo usar una matriz
diciendo que filas o columnas borrar pues en cada informe (y tenemos mas de
70 diferentes) las filas y columnas en blanco no son las mismas.

Un saludo y disculpas por el ladrillo. ¿por cierto, alguien me puede
explicar como funciona lo del certificado de programador?

Juan Ignacio
 

Leer las respuestas

#1 Fernando Arroyo
15/09/2003 - 10:19 | Informe spam
Sólo como sugerencia: no es conveniente mezclar varias consultas en un solo mensaje, en especial si no tienen nada que ver entre sí, porque lo más probable es que nadie sea capaz de contestarlas a todas, tal como me sucede a mí: no tengo ni idea de lo que es el "certificado del programador". Tal vez se trate de algún tipo de certificado de los emitidos por las autoridades de certificación, algunas de las cuales (las que emiten certificados compatibles con Office) puedes verlas en:

http://msdn.microsoft.com/library/d...rtprog.asp


Sobre las macros sí puedo decirte algo.
Se supone que la hoja a la que hay que eliminar las columnas y filas vacías se llama igual en todos los libros. Si esto no fuera así, habría que habilitar alguna forma de selección de hoja.
Para quitar las columnas vacías:


Sub AbrirLibroYQuitarColumnasVacías()
Dim wkbL As Workbook, wksH As Worksheet
Dim strLibro As String
Dim strNombreHoja As String
Dim blnExisteLaHoja As Boolean, dblFila As Integer

ChDir ("C:\") 'Directorio donde están los libros
strLibro = Application.GetOpenFilename(filefilter:="Libros de Microsoft Excel (*.xls),*.xls", Title:="Seleccionar libro a procesar")
Set wkbL = Workbooks.Open(strLibro)

strNombreHoja = "Hoja1" 'Nombre de la hoja que se procesará

For Each wksH In wkbL.Worksheets
If wksH.Name = strNombreHoja Then
blnExisteLaHoja = True
Exit For
End If
Next wksH

If Not blnExisteLaHoja Then
MsgBox prompt:="La hoja " & strNombreHoja & " no existe en el libro " & wkbL.Name, Buttons:=vbCritical + vbOKOnly
Exit Sub
End If

dblFila = 1
While dblFila < wksH.UsedRange.Columns.Count
If Application.WorksheetFunction.CountA(wksH.Columns(dblFila)) = 0 Then
wksH.Columns(dblFila).Delete
Else
dblFila = dblFila + 1
End If
Wend

Set wkbL = Nothing
Set wksH = Nothing
End Sub


Y para quitar las filas vacías:


Sub AbrirLibroYQuitarFilasVacías()
Dim wkbL As Workbook, wksH As Worksheet
Dim strLibro As String
Dim strNombreHoja As String 'Nombre de la hoja que se procesará
Dim blnExisteLaHoja As Boolean, lngFila As Long

ChDir ("C:\") 'Directorio donde están los libros
strLibro = Application.GetOpenFilename(filefilter:="Libros de Microsoft Excel (*.xls),*.xls", Title:="Seleccionar libro a procesar")
Set wkbL = Workbooks.Open(strLibro)

strNombreHoja = "Hoja1"

For Each wksH In wkbL.Worksheets
If wksH.Name = strNombreHoja Then
blnExisteLaHoja = True
Exit For
End If
Next wksH

If Not blnExisteLaHoja Then
MsgBox prompt:="La hoja " & strNombreHoja & " no existe en el libro " & wkbL.Name, Buttons:=vbCritical + vbOKOnly
Exit Sub
End If

lngFila = 1
While lngFila < wksH.UsedRange.Rows.Count
If Application.WorksheetFunction.CountA(wksH.Rows(lngFila)) = 0 Then
wksH.Rows(lngFila).Delete
Else
lngFila = lngFila + 1
End If
Wend

Set wkbL = Nothing
Set wksH = Nothing
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Juan Ignacio" escribió en el mensaje news:
Buenas tardes y perdón por el ladrillazo que os mando.

Un amigo mío me hizo una macro para la oficina que nos ahorra días de
trabajo, si días, pues antes lo hacíamos con funciones buscarV previa
comparación de que en los dos informes se cruzar hubiera los mismos
proveedores ya que podía haber proveedores diferentes (solo algunos) en cada
informe, en cuyo caso teníamos que poner a pedal, (cortar y pegar), el
nombre del proveedor que estuviera en un informe y no estuviera en otro y ya
solo la búsqueda de estos era una locura pues en algunos informes había mas
de 200 proveedores en un año y 240 en otro. El informe se utiliza para
comparar la actividad de un mismo periodo de dos años diferentes, por
ejemplo de enero a marzo del 2002 y mismo periodo del 2003. Es el transcurso
del tiempo pues hay proveedores que se han dado de baja y otros de alta pero
si uno se dio de alta en el segundo periodo necesito que todos los datos del
primer periodo salgan a "0" y viceversa.

Bueno, el caso es que la macro me la protegió para que no la tocaran en la
oficina con una cosa llamada "certificado del programador" yo en casa puedo
ver el código pero en la oficina nadie es capaz de verlo. Lo que yo quería
hacer ahora son algunas cosas, la principal que cada X tiempo o X usos la
macro pida una clave, supongo que lo de pensar en la clave me lo solucionara
mi cuñado que es matemático, pero lo que no se como hacer es que pida la
clave, si alguien me da una idea, aunque yo no la entienda, cuando mi amigo
vuelva se lo paso.

Otro tema, quería hacer dos macros, siempre partiendo de una hoja Excel
que llame al fichero a macrear, que me hicieran lo siguiente, una que
detectara la ultima columna que tuviera datos en alguna celda y a partir de
ahí fuera borrando todas las vacías hacia la izquierda y otra que detectara
la ultima fila con datos en alguna celda y a partir de ahí fuera hacia
arriba borrando las filas vacías. En mi empresa somos todos algo incultos,
yo con Excel me defiendo, con macros no, y el caso es que todos los informes
que antes solo salían impresos ahora salen también en Excel pero para
manejarlos es una locura, cada columna con datos tiene al lado una o dos
vacías, no se el motivo, y después tienen la puñetera manía de meter filas
vacías por medio de los informes, tampoco se el motivo, yo las borro a
pedal pero lleva mucho tiempo, después tengo que convertir el formato
personalizado fecha en numero y después en otra columna al lado volver a
ponerla como fecha, ya que en la que sale en el informe tiene unas comillas
" que impiden que pueda ordenarse, otra cosa que no entiendo. (todos esos
informes salen de una base de datos Oracle).

Si alguien ha tenido la paciencia de leer hasta aquí y aún le queda algo de
paciencia, pues agradecería ideas para los tres temas que pregunto. Hacer
que una clave salte cada X tiempo o usos (supongo que la solución para
darle la clave podría ser sumar la fecha que tenga el ordenador por ejemplo
12/05/2003 sumar todo y daría 2020 y a ese numero sumarle una constante,
ósea otro número cualquiera siempre el mismo o dividir por algún numero y
usar el entero o cualquier chorrada) el problema es hacer que la macro pida
la clave. Y después lo de las otras dos macros que podría ser una sola pero
en el cuadro de dialogo preguntar si borrar filas, columnas o ambas.

Agradezco ideas y hasta invitaría a pasteles para quien me arregle lo de la
macro fila columnas que no se por donde empezar, salvo que lo normal es
empezar de derecha a izquierda y de arriba abajo y no puedo usar una matriz
diciendo que filas o columnas borrar pues en cada informe (y tenemos mas de
70 diferentes) las filas y columnas en blanco no son las mismas.

Un saludo y disculpas por el ladrillo. ¿por cierto, alguien me puede
explicar como funciona lo del certificado de programador?

Juan Ignacio



Preguntas similares