Páginas

miércoles, 26 de febrero de 2014

VBA Excel: Como abrir todos los archivos de una carpeta y realizar un proceso. Funcion DIR()



Sub iterate()

Dim path As String
Dim filename As String

path = "D:\RubenBK\TEST\"
filename = Dir(path)  'Esta es la clave, la funcion Dir es la que scanea todos los archivos en el directorio.

           Do While filename <> ""
            Range("a2").End(xlDown).Offset(1, 0) = filename 'va creando una lista en la primera celda libre debako de "a2" y la va llevando con el nombre de los archivos.

            Range("a2").End(xlDown).Offset(0, 1) = FileDateTime(path & filename) 'va creando una lista con la fecha de modificacion de los archivos en el directorio
         
            filename = Dir  'no se exactamente que hace esto pero debe ir.

      Loop

End Sub

martes, 18 de febrero de 2014

VBA Excel: Como obtener la direccion de una celda


Por ejemplo busco una palabra dentro del rango utilizado de una hoja:

ThisWorkbook.Sheets("Sheet1").UsedRange.Find("TEXTO").Address

Esto devuelve un STRING, por ejemplo "A6"

Si se necesita el numero de fila  se escribe (retorna un valor numerico):

ThisWorkbook.Sheets("Sheet1").UsedRange.Find("TEXTO").Row

O el numero de columna:

ThisWorkbook.Sheets("Sheet1").UsedRange.Find("TEXTO").Column

Si solo se tienen el numero de fila y columna y se quiere obtener la direccion en estilo de referencia A1:

Cells(8, 64).Address(xlA1)


lunes, 17 de febrero de 2014

VBA Excel: Como ejecutar macro a una hora especifica.

Primero creas tu macro o procedimieno, en este caso es una macro que "habla"y te dice que actualices tu reporte:

Sub speakup()

Application.Speech.Speak ("hey, update your report, bitch!")
Application.Speech.Speak ("hey, update your report, bitch!")
Application.Speech.Speak ("hey, update your report, bitch!")
MsgBox ("Hey, update your report, BITCH")

End Sub


Luego creas otra macro para que a cierta hora "llame" a la macro anterior:


Sub reminder()

Application.OnTime TimeValue("15:29:00"), "speakup"

End Sub

VBA Excel: Aplicar bordes a un rango


Si es borde a todas las celdas utilizadas:

Usedrange.Borders.LineStyle = xlContinuous

Si es borde a un rango especifico

Range("A1:B6").Borders.LineStyle = xlContinuous

Si solo se quiere un marco

Range("A1:B6").Borderaround
Nota: Estoy creando un tutorial para aprender a utilizar VBA en la oficina. La pagina es www.macroreportes.com eventualmente ire agregando mas secciones, por lo que si quieres seguir el curso seria buena idea registrar tu email en la pagina para recibir las notificaciones cuando suba un nuevo post.

VBA: Script para abrir excel y ejecutar una macro.

fuente

Dim xlApp
Dim xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Tester.xls", 0, True) 'abre el archivo que contiene la macro.
xlApp.Run "Sample"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing
Se pega este texto en notepad y se guarda con la extension VBS

Luego de eso vamos a Inicio, todos los programas, accesorios, herramientas de sistema, tareas programadas. Y programamos la ejecucion de este script.


jueves, 13 de febrero de 2014

VBA Excel: Funcion para buscar parte de un texto en un libro y devolver un valor adyacente.


Me solicitaron buscar el numero de lista de empaque asociado al numero de factura en un listado. Sin embargo el numero de factura no es unico en cada celda, sino que se encuentra combunado con otros numeros de facturas. No se si con VLOOKUP se podría haber hecho lo mismo, porque el rango a buscar son 3 hojas distintas. El metodo .Find("What", lookat:=xlPart, Matchcase:= False) es apropiado para buscar parte de un texto dentro de una celda.

Option Explicit 'Importantísimo, obliga a declarar todas las variables y ayuda a evitar errores de digitacion con esos nombres.

Function buscar_packinglist(factura As String) 'factura es la variable que contendrá la celda con el valor a buscar

If Not ThisWorkbook.Sheets("Guayaquil").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then

buscar_packinglist = ThisWorkbook.Sheets("Guayaquil").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -9).Value
    
    Else
        If Not ThisWorkbook.Sheets("Quito").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then
        
        buscar_packinglist = ThisWorkbook.Sheets("Quito").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -9).Value
            Else
                If Not ThisWorkbook.Sheets("Spare Parts").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False) Is Nothing Then

                buscar_packinglist = ThisWorkbook.Sheets("Spare Parts").UsedRange.Find(factura, lookat:=xlPart, MatchCase:=False).Offset(0, -8).Value
                    Else
                        buscar_packinglist = "PL no encontrado"
                 End If
          End If
End If

End Function

Como crear rigntones para iPhone sin usar aplicaciones.

1. Entrar a itunes
2. Buscar la canción que se quiere convertir a ringtone.
3. Anotar el rango de segundos de la canción que se quieren convertir a tono. (30 segundos por lo general)
4. Dar click en botón derecho sobre la canción y seleccionar "Get Info"
5. Seleccionar la pestaña de opciones
6. Escribir los segundos de inicio y los de final
7.Click Ok
8. Click derecho sobre la canción y seleccionar " Create ACC Version"
9. Buscar el archivo ACC creado, click derecho y borrar.
10. En el mensaje de alerta seleccionar  "Keep Files"
11. Buscar el archivo. Por lo general se guarda en Musica>iTunes>iTunes Music en una carpeta con el nombre de la banda. El archivo tiene una extension .m4a  asi que hay que hacer click derecho, get info y cambiar la extension a .m4r
12. Una vez cambiado el nombre, hacer click sobre el archivo, se abrir'a en iTunes como tono.
13. Sincronizar el telefono con iTunes. Aqui ya puedes instalar el tono en el celular.
14. Volver a la canción original y dejar el rango de segundos como estaba inicialmente.

Si no quedo claro, aquí hay un video.



miércoles, 12 de febrero de 2014

Como sacar el INEN: Consultar los reglamentos técnicos


Primero, buscar si existe algun reglamento técnico para el producto que vaya a importar. Los reglamentos tecnicos vigentes se los descarga desde esta direccion:

http://www.normalizacion.gob.ec/wp-content/uploads/downloads/2014/02/reglamentos-tecnicos.pdf

O haciendo click en la imagen:


Para identificar los organismos encargados de emitir los certificados de conformidad por pais, ver la lista siguiente

VBA Excel: Jerarquia de los objetos


Application
.Workbooks
.Sheets
.Range

Si no se especifica Application o Workbooks o Sheets, VBA toma los libros o la hoja activa como referencia.

Range("A1:B2").Select

Con el objeto ThisWorkbook te aseguras de seleccionar el libro donde está la macro. Con usedrange selecciona todo el rango utilizadoj.

ThisWorkbook.Sheets("Guayaquil").usedrange.Copy

VBA Excel: Copiar datos de celdas desde un libro a otro, en forma de lista.



Sub file_location() 

Dim dato1 As String 'Declaro las variables
Dim dato2 As String
Dim dato3 As String

'Ahora grabo en las variables los datos que pienso "copiar" en otro libro.

With ThisWorkbook.Sheets("hoja 1") 'La funcion With es una maravilla
        dato1= .Range("c2") 'En lugar de copy paste uso el operador igual, mas eficiente dicen.
        dato2= .Range("c3")
        dato3 = .Range("c4")
End With

'Ahora con el libro de destino, selecciono los rangos, uso  .End(xlDown).Offset(1, 0) para encontrar la primera celda libre e ir "pegando"en lista:

With Workbooks.Open("D:\ElOtroLibro.xlsm").Sheets("Sheet1")
        .Range("a1").End(xlDown).Offset(1, 0) = dato1
        .Range("b1").End(xlDown).Offset(1, 0) = dato2
        .Range("c1").End(xlDown).Offset(1, 0) = dato3
End With

ActiveWorkbook.Save
ActiveWorkbook.Close

'Esto es solo para volver a la hoja y libro desde donde comencé a transferir los datos:

ThisWorkbook.Sheets("hoja 1").Activate
Range("c3").Select

Ahora como buscar un texto y devolver un valor adyacente


Nota: Estoy creando un tutorial para aprender a utilizar VBA en la oficina. La pagina es www.macroreportes.com eventualmente ire agregando mas secciones, por lo que si quieres seguir el curso seria buena idea registrar tu email en la pagina para recibir las notificaciones cuando suba un nuevo post.

martes, 11 de febrero de 2014

VBA Excel: Copiar celdas de una hoja de calculo a otra


Sirve para copiar y pegar datos de una celda a otra en una hoja distinta:

Sub copiar_celdas() 

ThisWorkbook.Sheets("guayaquil").Range("c8").Copy Destination:=Sheets("FORMS").Range("d1") 

End Sub 

'Aunque hay una forma mas eficiente dicen, sin utilizar copy-paste, simplemente el operador "=" 


Sub copiar_celdas() 

Sheets("FORMS").Range("d1") = ThisWorkbook.Sheets("guayaquil").Range("c8") 

End Sub

Ahora como copiar rango de un libro a otro.

lunes, 10 de febrero de 2014

Video motivacional para un día Lunes.

Este video fue un comercial transmitido en un SuperBowl hace algunos años. Te hace reconsiderar algunas cosas importantes...





sábado, 1 de febrero de 2014

Fedelbow: Federer le da un codazo a Wawrinka.

Durante el sorteo de la serie Suiza - Serbia.  Parece que a Roger no le hizo mucha gracia que Stan sea ahora el suizo numero 1 jaja.