You are on page 1of 5

On Error Resume Next

On Error Resume Next hace que la ejecucin contine en la instruccin que sigue a la instruccin que produjo el error en tiempo de ejecucin, o en la instruccin que sigue a la llamada ms reciente a otro procedimiento externo al procedimiento que contiene la instruccin On Error Resume Next. Esta instruccin permite que la ejecucin contine aunque se produzca un error en tiempo de ejecucin. Se puede colocar la rutina de control de errores donde se prevea que puede ocurrir el error, en vez de transferir el control a otro punto del procedimiento. Una instruccin On Error Resume Next queda inactiva cuando se llama a otro procedimiento, por lo que se debe ejecutar una instruccin On Error Resume Next en cada rutina llamada si se desea controlar el error en lnea dentro de esa rutina.

Hola para abrir el archivo puedes utilizar lo siguiente: dim ruta as string ruta = "C:\DETALLE.xls" 'direccion del archivo que deceas abrir Workbooks.Open (ruta) ' lo abres ActiveWorkbook.Sheets("hoja1").Select ' Selecciona la hoja . Cualquier consulta ac estamos... Si se puede, tendras que crear una variable que tome los datos de la celda especifica ejemplo: dim hoja as string dim ruta as string hoja=range("a1").value 'asignamos valor de la celda del libro actual ruta = "C:\DETALLE.xls" 'direccion del archivo que deceas abrir Workbooks.Open (ruta) ' lo abres creamos la variable ActiveWorkbook.Sheets(hoja).Select ' selecionas la hoja con el nombre de la variable

Lo logre resolver con el siguiente codigo Dim Archivo As String Archivo = Replace(Sheets("Reporte Diario").Range("A5"), "'", "") Workbooks.Open VentasF Lo que hice fue seguir los pasos que me indicaste de concatenar las rutas, asi solo coloco el numero o nombre que necesito en la celda, y a la hora que concatena le coloca la ruta completa. Y en la formula de arriba, el Range("A5") es la que hace referencia a la celda donde esta concatenada la ruta completa. Asi que En la Celda A1 yo pongo Mayo En la Celda A2 yo pongo 27

Y en la Celda A5 que es donde concatena, me pone D:\Formulas\Macros\Mayo27.xls Y este ultimo es el valor que toma la macro para abrir ese archivo sin necesidad de entrar a configurar el nombre del mismo dentro de la macro.. Muchisimas gracias por tu ayuda, me fue de mucha utilidad. Saludos. Perdon, me equivoque en el codigo.. El correcto es: Dim Archivo As String Archivo = Replace(Sheets("Hoja 1").Range("A5"), "'", "") Workbooks.Open Archivo Saludos.. te presento un ejemplo por si la hoja en donde pones el nombre del archivo es la hoja1 en la celda A1:
ChDir "D:\" Dim Libro As String Libro = Sheets(1).Cells(1, 1).Value Workbooks.Open Filename:="D:\" & Libro &".xls" Windows("Libro1").Activate

A continuacion te pongo dos procedimientos. El primero es una modificacion del tuyo que toma en cuenta tus comentarios mas arriba y el segundo hace lo mismo sin abrir el fichero de origen. Importante: El segundo codigo requiere una referencia a la libreria "Microsoft ActiveX Data Objects #.# Library" (donde #.# es el numero de la version mas moderna disponible). En la version castellana de Excel el nombre de la libreria posiblemente este traducido. La referencia se establece desde el Editor VBA yendo al menu Herramientas>Referencias... (Tools>References...) y tildando la casilla apropiada. 'Ejemplo1-Private Sub CommandButton1_Click() Dim strArchivo As String Dim oLibro As Workbook 'Creamos la variable de la ruta strArchivo = "C:\Libro1.xls"

'Comprobamos si el archivo existe en la ruta indicada If Dir(strArchivo) = "" Then MsgBox "No existe el archivo en la ruta indicada." Exit Sub End If

Workbooks.Open Filename:="C:\" & Archivo & ""

Range("C4").Select ActiveCell.FormulaR1C1 = "='C:\REPORTES\Septiembre\[DB01SEPTIEMBRE2013.xlsx]REP. EST. COMP. '!R43C7" Range("C5").Select ActiveCell.FormulaR1C1 = _ "='C:\REPORTES\Septiembre\[DB02SEPTIEMBRE2013.xlsx]REP. EST. COMP. '!R43C7" Range("C6").Select ActiveCell.FormulaR1C1 = _ "='C:\REPORTES\Septiembre\[DB03SEPTIEMBRE2013.xlsx]REP. EST. COMP. '!R43C7" Range("C7").Select ActiveWorkbook.Save

MACRO 1 SI JALA
Dim Ruta, Archivo, Valor, Dato As String Dim Contador, Celda As Integer Ruta = "REPORTES\Septiembre\" Windows("Prueba BD TMDB.xlsm").Activate Celda = 4 Valor = Range("b4").Value For Contador = 1 To Valor Archivo = Ruta & "DB0" & Contador & "SEPTIEMBRE2013" Workbooks.Open Filename:="C:\" & Archivo & "" Dato = Range("G43").Value ActiveWorkbook.Close Range("C" & Celda).Value = Dato Contador = Contador + 1 Celda = Celda + 1 Next

Hola. Te ajust la macro pero no la prob... cualquier dificultad mrcame la lnea que pudiera dar error. Sub BUSCAROP6() 'busca la primer celda vaca de la col G. Si la hoja ser la activa pods reemplazar Sheets("s...") por Activesheet como utilic ms abajo. fila = Sheets("secuencia").Range("G65536").End(xlUp).Row + 1 'toma el dato de la col F libro = ActiveSheet.Cells(fila, 6).Value Workbooks.Open Filename:=libro Sheets("seguimiento").Select Range("H39").Select Selection.Copy Windows("ORDEN DE PRODUCCION GENERADOR.xls").Activate Sheets("secuencia").Select Cells(fila, 8).Select 'col H Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.DisplayAlerts = False 'reemplac la lnea que abra nuevamente el libro por esta que solo lo activa Workbooks(libro).Activate Sheets("seguimiento").Select Range("d38").Select Selection.Copy Windows("ORDEN DE PRODUCCION GENERADOR.xls").Activate Sheets("secuencia").Select Cells(fila, 7).Select 'col G Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.DisplayAlerts = False Workbooks(libro).Activate Sheets("seguimiento").Select Range("d37").Select Selection.Copy Windows("ORDEN DE PRODUCCION GENERADOR.xls").Activate Sheets("secuencia").Select

Cells(fila, 9).Select 'col I Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.DisplayAlerts = True End Sub Prubalo y comentame si qued bien.

Si el valor de la celda es una fecha y se ve as porque tiene ese formato, entonces puedes obtener el mes mediante la funcin "month": if month(A1) = mesBuscado then .... Si el valor es un texto, supongo que es ese el caso, lo que tienes que tener en cuenta es que siempre debe estar en ese formato. En ese caso, el mes estara siempre entre las posiciones 4 y 5 del texto, o lo que es lo mismo, empieza en la posicin 4 y tiene una longitud de 2. En este caso la instruccin sera: if val(mid$(A1,4,2)) = mesBuscado then ... En ambos casos he supuesto que el mesBuscado es una variable numrica de tipo entero. Si fuese de tipo texto podras usar la funcin val(mesBuscado) para realizar la comparacin de forma numrica. Espero que sea eso lo que buscas. Un saludo

You might also like