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
.
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!¡.
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?
Cita de: BlackZeroX▓▓▒▒░░ en 15 Diciembre 2010, 21:27 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
Set rst = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
"Source=C:\Archivos de programa\Microsoft " & _
"Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
...
tambien para indicar una celda espesificamente puedes usar
la propiedad Cells de la hoja. vba te va dando las pautas...
Dulces Lunas!¡.
Bueno, ya vere como me doy trompadas con eso...!
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...!
HOLA!!!
Aca te dejo un codigo que pinta las celdas si en su interior hay un 1 :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For X = 2 To 7
If Range("B" & X) = 1 Then
Range("B" & X).Interior.ColorIndex = 35
Else
Range("B" & X).Interior.ColorIndex = 0
End If
If Range("C" & X) = 1 Then
Range("C" & X).Interior.ColorIndex = 35
Else
Range("C" & X).Interior.ColorIndex = 0
End If
Next
End Sub
GRACIAS POR LEER
Cita de: 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...!
Ejemplos hay a patadas por todos lados :¬¬ , a ver si esto te aclara las cosas
For Each c In Range("A5:K8")
MsgBox c.Value
Next
Ten en cuenta que cuando se recorren los valores van por filas
Saludos
;-)
.
Pero ten en cuenta Range es para el nombre de las celdas mientras que cell es por coordenadas...
Cells(Fila, Columna).Value = un valor X
o
Cells(48, 5).Value = un valor X
o para colorear = que Range...
Cells(5, 9).Interior.ColorIndex = 5
Cells te devuelve la misma clase o propiedades de Range. solo que no te aparecen las propiedades dichas...
Dulces Lunas!¡.
.
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