Mover hoja excel a otro archivo por codigo

16/02/2007 - 18:03 por Khan | Informe spam
Buenas tardes,

tengo un problemilla con una macro de excel. Esa macro se ejecuta con
un libro abierto llamado Temp.xls, coge los datos una hoja y crea una
hoja nueva, la renombra con la fecha de hoy y hace una serie de cosas
en esa hoja. Una vez termina debe abrir un archivo y moverla a el. La
cuestion es que este ulimo paso no termina de funcionar.

Ahora mismo el codigo que estoy usando es:

If ActiveSheet.Range("G2").Value = "CDN A" Then
Workbooks.Open ("C:\CDN A.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN
A").ActiveWorksheet
ElseIf ActiveSheet.Range("G2").Value = "CDN B" Then
Workbooks.Open ("C:\CDN B.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN
B").ActiveWorksheet
ElseIf ActiveSheet.Range("G2").Value = "CDN C" Then
Workbooks.Open ("C:\CDN C.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN
C").ActiveWorksheet
End If

El codigo evalua el contenido de la celda que contiene el titulo, y
dependiendo del titulo abre el archivo correspondiente y debe pegarla
despues de la hoja activa. El problema esta en la sentencia que mueve
la hoja, da error pero me parece que esta bien redactada.

Si alguien pudiera echarme una mano le estaria muy agradecido.

Gracias y un saludo.

Khan.
 

Leer las respuestas

#1 Héctor Miguel
17/02/2007 - 03:59 | Informe spam
hola, 'anonimo/a' !

... problemilla con una macro... coge los datos una hoja y crea una hoja nueva, la renombra... y hace una serie de cosas
... termina debe abrir un archivo y moverla a el. La cuestion es que este ulimo paso no termina de funcionar [...]
... evalua el contenido de la celda que contiene el titulo, y dependiendo del titulo abre el archivo correspondiente
... debe pegarla despues de la hoja activa.
El problema esta en la sentencia que mueve la hoja, da error pero me parece que esta bien redactada.



1) de donde 'sacaste' la palabra clave: 'ActiveWorksheet' -???-
deberias cambiarla por una 'valida': 'ActiveSheet' :))

2) prueba haciendo una ligera reduccion en las lineas de codigo con algo +/- como lo siguiente:

Select Case LCase(Range("g2"))
Case "cdn a", "cdn b", "cdn c"
Workbooks.Open "c:\" & Range("g2") & ".xls"
ThisWorkbook.Worksheets("hoja1").Move After:=Sheets(ActiveSheet.Index)
End Select

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Ahora mismo el codigo que estoy usando es:
If ActiveSheet.Range("G2").Value = "CDN A" Then
Workbooks.Open ("C:\CDN A.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN A").ActiveWorksheet
ElseIf ActiveSheet.Range("G2").Value = "CDN B" Then
Workbooks.Open ("C:\CDN B.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN B").ActiveWorksheet
ElseIf ActiveSheet.Range("G2").Value = "CDN C" Then
Workbooks.Open ("C:\CDN C.xls")
Workbooks("Temp").Worksheets("Hoja1").Move after:=Workbooks("CDN C").ActiveWorksheet
End If

Preguntas similares