Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ssccaann43 © en 15 Diciembre 2010, 20:43 pm



Título: Dificultad con Macros
Publicado por: ssccaann43 © en 15 Diciembre 2010, 20:43 pm
Bien, expongo un poco algo que debo resolver y no encuentro manera de como hacerlo..

Debo armar una macro en excel, que recorra ciertas filas para hacer un insert en una BD...

Sinceramente nunca me he metido con macros, estoy un poco perdido, agradezco una orientación... dejo una imagen del archivo excel que debo manejar, para hacerles una idea...

(http://img337.imageshack.us/img337/2648/excelg.jpg) (http://img337.imageshack.us/i/excelg.jpg/)

Deseo es leer los registros y luego hacer un insert en la BD... saludos
  ;D


Título: Re: Dificultad con Macros
Publicado por: BlackZeroX en 15 Diciembre 2010, 21:27 pm
.
Si es un excel puedes usar SQL.

  • Vba - Macro para ejecutar un sql desde una hoja de excel (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/357-macro-excel-ejecutar-sql-con-ado.htm)
  • ( Ado ) Pasar datos de Excel a Access (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/264-excel-a-access-con-ado.htm)

Tema similar (solo que a un mshflexgrid):

Como exportar MSHFlexgrid1 a Excel? - Expertos en vb6.0 (http://foro.elhacker.net/programacion_visual_basic/como_exportar_mshflexgrid1_a_excel_expertos_en_vb60-t297037.0.html)

En si en el vba al escribir una clase te vienen las subclases o propiedades de la misma, es como en vb6...

Dulces Lunas!¡.


Título: Re: Dificultad con Macros
Publicado por: ssccaann43 © en 15 Diciembre 2010, 21:30 pm
Brother quiero hacer todo lo contrario...! Esa información  ya esta en el archivo excel..!

Debo construir la macro dentro del Excel, para que al ejecutarla pues la informacion que contenga en las celdas, pueda insertarla en una BD...! Me sigues?


Título: Re: Dificultad con Macros
Publicado por: BlackZeroX en 15 Diciembre 2010, 21:37 pm

En si en el vba al escribir una clase te vienen las subclases o propiedades de la misma, es como en vb6...


No me explique bien vdd?.

Has de cuenta que una hoja en excel es un form de vb6, las hojas traen eventos al igual que los forms, bueno aprovecha dichos eventos, ademas cada celda digase que son textbox con indices, por asi llamarlos asiq ue con cells o range puedes hacer referencia a los mismos.

y en el vba puedes usar CreateObject para manejar ADO

Código
  1.  
  2. Set rst = CreateObject("ADODB.Recordset")
  3. Set cn = CreateObject("ADODB.Connection")  
  4. cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _  
  5.                             "Source=C:\Archivos de programa\Microsoft " & _  
  6.                             "Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
  7.  
  8.  

...

tambien para indicar una celda espesificamente puedes usar

la propiedad Cells de la hoja. vba te va dando las pautas...

Dulces Lunas!¡.


Título: Re: Dificultad con Macros
Publicado por: ssccaann43 © en 15 Diciembre 2010, 22:25 pm
Bueno, ya vere como me doy trompadas con eso...!


Título: Re: Dificultad con Macros
Publicado por: ssccaann43 © en 15 Diciembre 2010, 22:47 pm
Black, al menos crees poder guiarme como hacer quizas un for segun la imagen para obtener los valores ubicados desde la fila 5 a la fila 8, leyendo desde la A hasta la K.? Estoy perdido, te lo juro que estoy perdido, busco ejemplos y nada...!


Título: Re: Dificultad con Macros
Publicado por: 79137913 en 16 Diciembre 2010, 12:08 pm
HOLA!!!

Aca te dejo un codigo que pinta las celdas si en su interior hay un 1 :

Código
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.    For X = 2 To 7
  3.        If Range("B" & X) = 1 Then
  4.            Range("B" & X).Interior.ColorIndex = 35
  5.        Else
  6.            Range("B" & X).Interior.ColorIndex = 0
  7.        End If
  8.        If Range("C" & X) = 1 Then
  9.            Range("C" & X).Interior.ColorIndex = 35
  10.        Else
  11.            Range("C" & X).Interior.ColorIndex = 0
  12.        End If
  13.    Next
  14. End Sub

GRACIAS POR LEER


Título: Re: Dificultad con Macros
Publicado por: Novlucker en 16 Diciembre 2010, 12:16 pm
Black, al menos crees poder guiarme como hacer quizas un for segun la imagen para obtener los valores ubicados desde la fila 5 a la fila 8, leyendo desde la A hasta la K.? Estoy perdido, te lo juro que estoy perdido, busco ejemplos y nada...!

Ejemplos hay a patadas por todos lados :¬¬ , a ver si esto te aclara las cosas
Código
  1. For Each c In Range("A5:K8")
  2.    MsgBox c.Value
  3. Next
Ten en cuenta que cuando se recorren los valores van por filas

Saludos


Título: Re: Dificultad con Macros
Publicado por: ssccaann43 © en 16 Diciembre 2010, 15:20 pm
 ;-)


Título: Re: Dificultad con Macros
Publicado por: BlackZeroX en 16 Diciembre 2010, 19:58 pm
.
Pero ten en cuenta Range es para el nombre de las celdas mientras que cell es por coordenadas...

Código
  1.  
  2. Cells(Fila, Columna).Value = un valor X
  3.  
  4. o
  5.  
  6. Cells(48, 5).Value = un valor X
  7.  
  8. o para colorear = que Range...
  9.  
  10. Cells(5, 9).Interior.ColorIndex = 5  
  11.  
  12.  

Cells te devuelve la misma clase o propiedades de Range. solo que no te aparecen las propiedades dichas...

Dulces Lunas!¡.
.


Título: Re: Dificultad con Macros
Publicado por: Novlucker en 16 Diciembre 2010, 21:30 pm
Pero el caso es que Range representa una colección de celdas, mientras que Cells solo se puede utilizar para hacer referencia a una celda en específico pasando como parametro fila y columna, o bien para obtener todas las celdas de la hoja sin pasar parametro alguno.

La otra opción es referenciar a dos celdas por medio de Cells para luego asignarlo a un Range, de modo de poder iterar en un for

Saludos