jueves, 24 de marzo de 2011

COMO DESDE UN ARCHIVO ABRIR OTRO TRABAJARLO Y PEGARLO DESDE DONDE SE EJECUTA LA MACRO

Sub Libro_Aux()
'***************************ESTO SE PEGA EN EL ARCHIVO ORIGEN DESDE DONDE SE EJECUTA*************************************
Dim wbkOrigen As Workbook
Dim wbktemporal As Workbook

Set wbkOrigen = ActiveWorkbook
'************metodo para abror archivo txt ****************
carga = Application.GetOpenFilename
Workbooks.Open carga
'************metodo para abror archivo txt ****************

'**********************desde aca el lo que se va hacer****************************
Workbooks.OpenText _
Filename:=carga, _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(31, 1), Array(47 _
, 1), Array(66, 1), Array(79, 1), Array(173, 1), Array(264, 1), Array(299, 1), Array(335, 1) _
), TrailingMinusNumbers:=True


Application.ScreenUpdating = False


Range("A1").Select
Cells.Select
Selection.AutoFilter
Range("A4").Select
Selection.AutoFilter Field:=1, Criteria1:="="
ActiveCell.Offset(1, 0).Range("1:1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:="=----*", Operator:=xlAnd
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:="= *", Operator:=xlAnd
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:="=Cuenta*", Operator:=xlAnd
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:="=Negocio:*", Operator:=xlAnd
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:="=Oficina:*", Operator:=xlAnd
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=1
ActiveWindow.Zoom = 80
Columns("A:K").EntireColumn.AutoFit
Range("F4").Select
Selection.ClearContents
Columns("F:K").Select
Selection.Style = "Comma"

Range("A1").Select

Rows("1:3").Delete

Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 9), Array(3, 1)), TrailingMinusNumbers:=True
Columns("F:F").EntireColumn.AutoFit
Range("J2").Select
ActiveCell.FormulaR1C1 = "=+IF(RC[-3]=0,RC[-2],-RC[-3])"
Range("J2").Select
Selection.Copy
Range("I2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("J:J").Select

Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:J").EntireColumn.AutoFit
Columns("A:J").Select
Columns("A:J").EntireColumn.AutoFit
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy


'**********************hasta aca el lo que se va hacer****************************

Set wbktemporal = ActiveWorkbook ' se define que es el libro que esta activo la variable


wbktemporal.Close SaveChanges:=False ' se cierra el archivo en donde se trabaja y los valores quedan guardados en el portapapeles por defecto hay quer hacer que si para que los guarde

wbkOrigen.Activate ' se activa el archivo donde esta guardada la macro

Sheets("Datos").Select ''' esta hoja es del archivo origen
ActiveSheet.Paste

End Sub

viernes, 18 de marzo de 2011

Hacer un mensaje con VBOKCANCEL y que hacer en cada opcion

i = MsgBox("Desea Continuar", vbOKCancel)

If i = vbCancel Then
ActiveWorkbook.Close'lo que se quiere hacer en caso de que sea Cancel
Exit Sub
Else
i = vbOK
End If

' codigo que es lo que se quiere hacer en caso de que se OK

miércoles, 16 de marzo de 2011

ABRIR ARCHIVO DESDE CUALQUIER UBICACION

Private Sub Workbook_Open()
carga = Application.GetOpenFilename
Workbooks.open carga
End Sub

COMO HACER QUE SUME POR COLORES

Function Sumarcolor(Celdacolor As Range, Rangosuma As Range) As Double
Dim celda As Range
For Each celda In Rangosuma
If celda.Interior.ColorIndex = Celdacolor.Cells(1, 1).Interior.ColorIndex Then Sumarcolor = Sumarcolor + celda
Next celda
Set celda = Nothing
End Function

Uso de Variables VBA EXCEL - Macros VBA EXCEL

Para que :Se emplean para "GUARDAR" y "MANIPULAR VALORES ó DATOS "

Tipos de Datos:

-numericos ---> Myvarnum=5000 'guardando el dato numerico "5000" en "Myvarnum"
-cadenas ---> Myvarcadena="Libro39" 'guardando la cadena "Libro39" en Myvarcadena
-objetos ---> set wbk=Activeworkbook ''asig¡nando el libro activo a la variable de tipo objeto "wbk"

-variantes ----->myvar=5000 , myvar="XXX" , set myvar=Activeworkbook
'y en las varables de tipo variant uno podra almacenar un dato de diferentes tipos.

Las varibles se declaran de la sgte manera
-------------------------------------------


Dim var_ejemplo as string


Dim : Indica la declaración d ela variable
var_ejemplo :nombre de la variable
As : cualificativo para separar el "nombre de la varible" del "tipo de dato"
String : El tipo de dato (puede ser string ,integer, object , variant ,etc,etc)

Dim Myvarnum as integer 'tipo..numerico
Dim Myvarcadena as string 'tipo...cadena
Dim wbk as object 'tipo...objeto
Dim myvar as variant 'tipo...variant

*Varibles de objeto
---------------------
empleadas par refrenciar un objeto

*ojo para asignar un objeto a una variable uno debe asignar
de la sgte forma..primero

colocar set..luego nombre de la variable e igualr al objeto.

Set variable=Objeto

Ejemplo
--------

Dim wbk as object
-asignamos el objeto ===> el libro activo(Activeworkbook) a la variable "wbk"
set wbk=Activeworkbook
-y luego podremos por ejemplo decir
Msgbox wbk.name 'y obtendremos el nombre del libro activo


Ambito de las variables
------------------------
Se refiere al área donde se puede acceder.



'-a nivel de procedimiento
'-------------------------

Sub procedim 'las varibles solo seran acesibles dentro del procedimiento

dim paraproc as string
dim paraprox as string
paraproc="Real Madrid"
paraprox="Barcelona"

End sub

'-a nivel de modulo
'----------------------

Dim superclub as string 'accesible a todos los procedimientos del modulo


sub prueba
superclub="Manchester United"
End sub

'-a nivel de proyecto
'---------------------

Option Explicit

'al declara la variable como publica ser accesible desde todo el proyecto

Public superclub As String
Sub prueba1()

superclub = "Inter de Milan"

Fuente: http://excel-vba-code.blogspot.com/2008/02/uso-de-variables-vba-excel-macros-vba.html

martes, 15 de marzo de 2011

RUTINA PARA ELIMINAR CELDAS IGUALES EN EXCEL






Do Until ActiveCell = ""
If ActiveCell = ActiveCell.Offset(0, 1) Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(1, 0).Activate
Loop