Visual Basic para Aplicaciones - Error 1004, error en el método Range del objeto _Global

Life is soft - evento anual de software empresarial
   
Vista:

Error 1004, error en el método Range del objeto _Global

Publicado por Jak (4 intervenciones) el 26/10/2013 21:45:57
Hola a Todos:
Para Insertar una columna y copiar el contenido de otra, utilicé excel 2007 para generar una macro, luego copié el código de esa macro en mi form de vb 6.
Selecciono una Option entre las tres que tengo y ejecuta la rutina perfectamente, pero si vuelvo a seleccionar otra option y tratar de ejecutar la rutina, me aparece:
"Error 1004, error en el método Range del objeto _Global"
Para tomar otra option y ejecutar la rutina debo cerrar completamente el formulario y luego volver a iniciarlo.
He buscado mucho por una solución pero no la encuentro
Muchas gracias por vuestro tiempo

A continuación el código:
Private Sub LimpiaCeldassPintadas_Click()

If Option1 = True Then Paso = 4: Inicio = 1: Archi = "Tra"
If Option2 = True Then Paso = 4: Inicio = 2: Archi = "Seg”
If Option3 = True Then Paso = 4: Inicio = 3: Archi = "Rev"
Set objExcel = New Excel.Application
Set xLibro1 = objExcel.Workbooks.Open(App.Path + "\" + "Nacho" + "\" & Archi)
objExcel.Visible = False

'A continuación el código que saqué de la macro: Inserta una columna E y luego copia en esa columna E, el contenido de la columna A (A1: A10)
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1:A10").Select
Selection.Copy
Range("E1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Fin del código que saque de la macro

xLibro1.Save
xLibro1.Close
Set xLibro1 = Nothing
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Visual Basic para Aplicaciones
- Código fuente de Visual Basic para Aplicaciones
- Cursos de Visual Basic para Aplicaciones
- Temas de Visual Basic para Aplicaciones
información
Códigos de Visual Basic para Aplicaciones
- Juego del Ahorcado
- Monto Escrito
- Convertir números a letras
Imágen de perfil de JuanC

Error 1004, error en el método Range del objeto _Global

Publicado por JuanC juanc2942@gmail.com (431 intervenciones) el 26/10/2013 22:08:50
deberías colocar un break point y depurar el código, no creo que esté 'lejos' el problema...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 1004, error en el método Range del objeto _Global

Publicado por Jak (4 intervenciones) el 27/10/2013 01:21:36
El break point se produce en Columns("E:E").Select al efectuar una segunda option
Gracias por tu respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Error 1004, error en el método Range del objeto _Global

Publicado por JuanC juanc2942@gmail.com (431 intervenciones) el 27/10/2013 10:47:52
quizá el error se debe a que no está definida explícitamente la
hoja sobre la cual se debe seleccionar la columna E

en lugar de Columns("E:E").Select

debería decir

Hoja1.Columns("E:E").Select

o

Hoja1.Activate
ActiveSheet.Columns("E:E").Select

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 1004, error en el método Range del objeto _Global

Publicado por Jak (4 intervenciones) el 27/10/2013 13:00:32
Sigue apareciendo dicho error. Incluso si pongo Worksheets(1).Activate.
He notado que el proceso EXCEL queda activo para cada vez que ejecuto la rutina. Lo puedo ver en el Administrador de Tareas de Windows (CTRL + ALT + SUP).
No encuentro la manera de eliminar al EXCEL remanente con alguna orden dentro de la Sub en cuestión. Por ahí pasaría la solución
Saludos desde Posadas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 1004, error en el método Range del objeto _Global

Publicado por Dario Flores rebul@adinet.com.uy (1 intervención) el 02/04/2016 22:35:51
1
2
3
4
5
6
7
8
9
10
11
Sub RangoFecha()
 
Dim FechaDesde As Long, FechaHasta As Long
 
 
  FechaDesde = Range(ªxFecha1ª)
  FechaHasta = Range(ªxFecha2ª)
 
 
  Range(ªA6ª).AutoFilter field:=1, Criteria1:=ª >= ª & FechaDesde, Operator:=x1And, Criteria2:=ª <= ª & FechaHasta
 End Sub
Tengo esta macro que filtra entre fechas al ejecutarla me da error 1004 en FechaDesde.
Aguien sabe como solucionar.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 1004, error en el método Range del objeto _Global

Publicado por Jak (4 intervenciones) el 29/10/2013 01:44:35
Me ha llevado un par de días pero al fin encontré causa y solución:
La causa era que la declaración Set objExcel = New Excel.Application me formaba una nueva aplicación cada ves que ejecutaba la rutina con las diferentes Option y Visual Basic (o Windows) guardaba cada uno de estos procesos vaya a saber donde.
La solución fue colocar Set objExcel = New Excel.Application cuando carga el form (Form Load)
y no descargar al proceso al final de la sub mediante 'Set objExcel = Nothing pues no me reconocería nuevamente Set xlibro1 = objExcel.Workbooks.Open(App.Path + "\" & Archi)

Al final de la rutina pongo :
1
2
3
4
'Guarda los cambior  y cierra
ActiveWorkbook.Close Savechanges:=True
'sale
objExcel.Quit

La rutina queda entonces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub LimpiaCeldassPintadas_Click()
 
If Option1 = True Then Paso = 4: Inicio = 1: Archi = "Tra"
If Option2 = True Then Paso = 4: Inicio = 2: Archi = "Seg”
If Option3 = True Then Paso = 4: Inicio = 3: Archi = "Rev"
Set objExcel = New Excel.Application
Set xLibro1 = objExcel.Workbooks.Open(App.Path + "\" + "Nacho" + "\" & Archi)
objExcel.Visible = False

'A continuación el código que saqué de la macro: Inserta una columna E y luego copia en esa columna E, el contenido de la columna A (A1: A10)
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1:A10").Select
Selection.Copy
Range("E1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Fin del código que saque de la macro

'Guarda los cambio  y cierra
ActiveWorkbook.Close Savechanges:=True
'sale
objExcel.Quit

End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar