TODAVIA PROBLEMA

26/01/2009 - 05:35 por LUIS DANNY SALAS | Informe spam
Gracias, de acuerdo con la sugerencia elimine : Windows("Libro1").Activate
y utilice:
With Workbooks.Add
"procedimiento"
End with

funciona bien, pero el libro nuevo queda abierto y ademas aparecen otros que
tambien quedan abiertos, libro 6 libro 7,libro 8

??????????

te expongo el codigo completo:

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add

Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean

respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show

If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End If
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir para
poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub

Preguntas similare

Leer las respuestas

#1 LUIS DANNY SALAS
26/01/2009 - 22:01 | Informe spam
Gracias por los consejos, voy a tratar de depurar un poco estos códigos.

"Gaby" escribió en el mensaje
news:
Hola,

No soy experta en VBA y para mi es dificil seguir el código fuera de
contexto, así que con este mensaje no intento solucionar tu problema,
simplemente darte algunas guias para cuando trabajes con codigo de VBA
(consejos básicos, no soy experta)

- Siempre agrega comentarios a tu código, facilita la lectura a otras
personas, y aunque sólo tu lo utilizes, lo que ahora es muy claro para
ti, no recordaras que tratabas de hacer cuando lo veas despues de un
par de años.

- El seleccionar rangos constantemente, le resta eficiencia a tu
codigo, por ejemplo
Range("C6:F52").Select
Selection.Copy
Puede escribirse como
Range("C6:F52").Copy
Esto hará tu codigo mas eficiente, fácil de leer y mas corto.

- Siempre que se ejecuten varios comandos a un mismo objeto es
conveniente utilizar With..End With, por ejemplo:
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
puede escribirse
With Range("C6")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
.FormatConditions(1).Font.ColorIndex = 2
.Copy
End With

Bueno, espero que esta pequeña guía sea de utilidad para ti

Saludos

Gabriela Cerra
http://excel.gabrielacerra.com


On Jan 25, 10:35 pm, "LUIS DANNY SALAS" wrote:
Gracias, de acuerdo con la sugerencia elimine : Windows("Libro1").Activate
y utilice:
With Workbooks.Add
"procedimiento"
End with

funciona bien, pero el libro nuevo queda abierto y ademas aparecen otros
que
tambien quedan abiertos, libro 6 libro 7,libro 8

??????????

te expongo el codigo completo:

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add

Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone,
_
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean

respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show

If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir
para
poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub
Respuesta Responder a este mensaje
#2 LUIS DANNY SALAS
26/01/2009 - 22:01 | Informe spam
Muchas gracias , si tienes tiempo y puedes hacerle los recortes te lo
agradezco mucho, yo de todas formas por mi parte lo voy a intentar a ver que
pasa.

"Héctor Miguel" escribió en el mensaje
news:
hola, Luis !

... de acuerdo con la sugerencia elimine : Windows("Libro1").Activate y
utilice:
With Workbooks.Add
"procedimiento"
End with
funciona bien, pero el libro nuevo queda abierto
y ademas aparecen otros que tambien quedan abiertos, libro 6 libro
7,libro 8
??????????



el "detalle" es que este codigo hace uso de VARIAS instrucciones
Workbooks.Add
y cada una es la generacion de un nuevo libro :-((
(ademas de una que otra "danza" no necesaria seleccionando rangos y hojas)

la idea "era" utilizar una sola instruccion (dentro de un bloque
With...End With)
=> HASTA CERRAR el libro creado

(si no aparece alguien antes con alguna propuesta de "depuracion", tratare
de hacer esos recortes) :D
saludos,
hector.

__ el codigo completo: __

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone,
_
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean
respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show
If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End If
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir
para poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub




Respuesta Responder a este mensaje
#3 Héctor Miguel
26/01/2009 - 22:59 | Informe spam
hola, Luis !

... de acuerdo con la sugerencia elimine : Windows("Libro1").Activate y utilice:
With Workbooks.Add
"procedimiento"
End with
funciona bien, pero el libro nuevo queda abierto
y ademas aparecen otros que tambien quedan abiertos, libro 6 libro 7,libro 8
??????????



el "detalle" es que este codigo hace uso de VARIAS instrucciones Workbooks.Add
y cada una es la generacion de un nuevo libro :-((
(ademas de una que otra "danza" no necesaria seleccionando rangos y hojas)

la idea "era" utilizar una sola instruccion (dentro de un bloque With...End With)
=> HASTA CERRAR el libro creado

(si no aparece alguien antes con alguna propuesta de "depuracion", tratare de hacer esos recortes) :D
saludos,
hector.

__ el codigo completo: __

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean
respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show
If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End If
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir para poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub
Respuesta Responder a este mensaje
#4 Gaby
26/01/2009 - 23:33 | Informe spam
Hola,

No soy experta en VBA y para mi es dificil seguir el código fuera de
contexto, así que con este mensaje no intento solucionar tu problema,
simplemente darte algunas guias para cuando trabajes con codigo de VBA
(consejos básicos, no soy experta)

- Siempre agrega comentarios a tu código, facilita la lectura a otras
personas, y aunque sólo tu lo utilizes, lo que ahora es muy claro para
ti, no recordaras que tratabas de hacer cuando lo veas despues de un
par de años.

- El seleccionar rangos constantemente, le resta eficiencia a tu
codigo, por ejemplo
Range("C6:F52").Select
Selection.Copy
Puede escribirse como
Range("C6:F52").Copy
Esto hará tu codigo mas eficiente, fácil de leer y mas corto.

- Siempre que se ejecuten varios comandos a un mismo objeto es
conveniente utilizar With..End With, por ejemplo:
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
puede escribirse
With Range("C6")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
.FormatConditions(1).Font.ColorIndex = 2
.Copy
End With

Bueno, espero que esta pequeña guía sea de utilidad para ti

Saludos

Gabriela Cerra
http://excel.gabrielacerra.com


On Jan 25, 10:35 pm, "LUIS DANNY SALAS" wrote:
Gracias, de acuerdo con la sugerencia elimine : Windows("Libro1").Activate
y utilice:
With Workbooks.Add
"procedimiento"
End with

funciona bien, pero el libro nuevo queda abierto y ademas aparecen otros que
tambien quedan abiertos, libro 6 libro 7,libro 8

??????????

te expongo el codigo completo:

Private Sub CONCENTRADO()
Application.ScreenUpdating = False
On Error GoTo Errores
Workbooks.Add
ThisWorkbook.Activate
Range("C6:F52").Select
Selection.Copy
With Workbooks.Add

Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("C6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ESBLANCO($B6)=VERDADERO"
Selection.FormatConditions(1).Font.ColorIndex = 2
Range("C6").Select
Selection.Copy
Range("C7:C47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("C6").Select
Selection.Copy
Range("A6:A47").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("B6").Select
End With
ThisWorkbook.Activate
Range("E5").Select
Selection.Copy
With Workbooks.Add
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C1:C3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D6:D57").Select
Selection.NumberFormat = "0"
Range("B6").Select
ActiveWindow.DisplayHeadings = False
Application.DisplayAlerts = False
Dim respuesta As Boolean

respuesta = Application.Dialogs(xlDialogSaveWorkbook).Show

If respuesta Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
MsgBox "Operación cancelada por el usuario"
End
With ActiveWindow
.Top = 10
.Left = -20
End With
ActiveWindow.Close
Application.DisplayAlerts = True
ThisWorkbook.Activate
Range("D11").Select
Exit Sub
Errores:
Application.CutCopyMode = False
Range("D11").Select
MsgBox "Ha ocurrido un error,debes cerrar Excel y volverlo a abrir para
poder digitalizar nuevamente tu concentrado"
Exit Sub
End With
End Sub
Respuesta Responder a este mensaje
#5 Héctor Miguel
27/01/2009 - 06:42 | Informe spam
hola, Luis !

prueba el siguiente codigo (adelgazado un poco) sobre una copia de tus datos y...
si cualquier duda (o informacion adiciona)... comentas ?
saludos,
hector.

Private Sub Concentrado()
Application.ScreenUpdating = False
Dim FormulaFC As String
With ActiveSheet
Workbooks.Add
ActiveWindow.DisplayHeadings = False
Range("a1").Formula = "=isblank($b1)"
FormulaFC = Mid(Range("a1").FormulaLocal, 2)
.Range("c6:f52").Copy
Range("a1").PasteSpecial xlPasteValues
Range("a1").PasteSpecial xlPasteColumnWidths
With Range("c4")
.Value = .Range("e5").Value
.Offset(-3).Resize(4).HorizontalAlignment = xlCenter
.Offset(-3).Resize(4).VerticalAlignment = xlBottom
End With
With Range("a6:a47,c6:c47").FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=" & FormulaFC
.Parent.FormatConditions(1).Font.ColorIndex = 2
End With
Range("d6:d47").NumberFormat = "0"
End With
If Application.Dialogs(xlDialogSaveWorkbook).Show Then
MsgBox "Se ha guardado satisfactoriamente una copia de su concentrado"
Else
ActiveWorkbook.Close False
MsgBox "Deberás procesar de nuevo el concentrado", , "Operación cancelada por el usuario"
End If
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida