You are on page 1of 7

Utilizando el control Data de vb para conectar directamente a la hoja

El ejemplo tiene una rutina llamada Cargar_Excel_FlexGrid, que se le debe especificar el path del archivo xls en el primer parmetro y otro parmetro para especificar la hoja a cargar en la grilla Controles:

Colocar en el formulario un control Microsoft FlexGrid llamado MsFlexgrid1

un control CommonDialog un CommandButton para seleccionar el Libro un control Data.

Nota: en la propiedad DataSource del control FlexGrid indicar el control Data. Cdigo fuente:
Texto planoCopiar cdigo fuenteImprimir

1. Private Sub Command1_Click()


2.

3. With CommonDialog1
4.

5. 6.
7. 8. 9.

.DialogTitle = " Seleccionar archivo Excel para cargar" .Filter = "Archivos XLS|*.xls" .ShowOpen

10.
11.

If .FileName = "" Then Exit Sub

12. 13. 14.


16.

' Le enva el path del Libro de Excel a llenar en el Flex Call Cargar_Excel_FlexGrid(.FileName) Me.Caption = .FileName

15. End With 17. End Sub


18.

19. Private Sub Form_Load() 20. 21.


22. ' Tipo de conexin Data1.Connect = "Excel 4.0;"

23.
24.

Command1.Caption = " Abrir libro de Excel "

25. End Sub


26.

27. 'Carga la hoja de Excel indicada en el control FlexGrid


28.

29. Sub Cargar_Excel_FlexGrid(path_XLS As String, _ 30.


31. Optional La_Hoja As String = "Hoja1")

32.
33.

On Local Error GoTo Errsub

34.
35. 36. 37.

With Data1 .DatabaseName = path_XLS

38. 39. 40.


41.

'Asigna el Recordsource al control data .RecordSource = La_Hoja & "$" MSFlexGrid1.Redraw = False .Refresh MSFlexGrid1.Redraw = True

42.
43.

44.
45.

End With

46. 'Error 47. Exit Sub


48. Errsub: 49.

50. MsgBox Err.Description, vbCritical


51.

52. End Sub

Private Sub Command1_Click() With CommonDialog1 .DialogTitle = " Seleccionar archivo Excel para cargar" .Filter = "Archivos XLS|*.xls" .Show Open If .FileName = "" Then Exit Sub

Mediante automatizacin
En el siguiente enlace hay dos ejemplos para, a diferencia del caso anterior que se conecta directamente a la hoja con el control Data, en este caso se accede va automatizacin a la instancia de Excel y de este modo poder leer un rango de datos. -Ir a la pgina

Utilizando el control Data de vb para conectar directamente a la hoja


El ejemplo tiene una rutina llamada Cargar_Excel_FlexGrid, que se le debe especificar el path del archivo xls en el primer parmetro y otro parmetro para especificar la hoja a cargar en la grilla Controles:

Colocar en el formulario un control Microsoft FlexGrid llamado MsFlexgrid1

un control CommonDialog un CommandButton para seleccionar el Libro un control Data.

Nota: en la propiedad DataSource del control FlexGrid indicar el control Data. Cdigo fuente:
Texto planoCopiar cdigo fuenteImprimir

1. Private Sub Command1_Click()


2.

3. With CommonDialog1

4.

5. 6.
7. 8. 9.

.DialogTitle = " Seleccionar archivo Excel para cargar" .Filter = "Archivos XLS|*.xls" .ShowOpen

10.
11.

If .FileName = "" Then Exit Sub

12. 13. 14.


16.

' Le enva el path del Libro de Excel a llenar en el Flex Call Cargar_Excel_FlexGrid(.FileName) Me.Caption = .FileName

15. End With 17. End Sub


18.

19. Private Sub Form_Load() 20. 21.


22. ' Tipo de conexin Data1.Connect = "Excel 4.0;"

23.
24.

Command1.Caption = " Abrir libro de Excel "

25. End Sub


26.

27. 'Carga la hoja de Excel indicada en el control FlexGrid


28.

29. Sub Cargar_Excel_FlexGrid(path_XLS As String, _ 30.


31. Optional La_Hoja As String = "Hoja1")

32.
33.

On Local Error GoTo Errsub

34.
35. 36. 37.

With Data1 .DatabaseName = path_XLS

38. 39. 40.


41.

'Asigna el Recordsource al control data .RecordSource = La_Hoja & "$" MSFlexGrid1.Redraw = False .Refresh

42.
43.

MSFlexGrid1.Redraw = True

44.
45.

End With

46. 'Error 47. Exit Sub


48. Errsub: 49.

50. MsgBox Err.Description, vbCritical


51.

52. End Sub


Private Sub Command1_Click() With CommonDialog1 .DialogTitle = " Seleccionar archivo Excel para cargar" .Filter = "Archivos XLS|*.xls" .Show Open If .FileName = "" Then Exit Sub

Curso de Contabilidad, aprende en tus ratos libres, de manera rpida y econmica. InstitutoMaurer.com.mx Tengo dos tablas en una base de datos creadas por medio del vizdata que trae el visual basic 6.0. Necesito dos cosas: 1- necesito modificar la longitud de algunos campos de las tablas. Como lo hago? 2- necesito relacionar campos de las dos tablas. Como lo hago? 24/02/2005

Experto Hola, El VisData de VB6 es un proyecto que tambien lo puedes encontrar como codigo en la carpeta de ...MicrosoftVisualStudio/MSDN/SAMPLES/1030/Visdata. Si quieres puedes echarle un vistazo, es bastante interesante y ademas si quieres reutilizar alguna de las funcionalidades solo tienes que copiar el .frm y .frx en tu proyecto y buscar en el codigo "standalone" ah te especifican los cambios a realizar para reutilizar el cdigo. no obstante al crear la base de datos le habras dado un formato para modificarlo, lo mejor seria abrirlo con la aplicacin especifica, es decir, si la has creado con formato Access modficarlo en Access, si es Visual Fox Pro con VFP, etc... si no tienes acceso a ningun programa de estos, siempre puedes atraves de codigo crear una conexion y ejecutar un comando con una sentencia de SQL para alterar la tabla o para crear las relaciones,

Aqui tienes unos ejemplos de Alter Table para crear las relaciones entre tablas deberias utilizar la parte de Foerign Key. ALTER TABLE table { [ ALTER COLUMN column_name { new_data_type [ ( precision [ , scale ] ) ] [ COLLATE < collation_name > ] [ NULL | NOT NULL ] | {ADD | DROP } ROWGUIDCOL } ] | ADD { [ < column_definition > ] | column_name AS computed_column_expression } [ ,...n ] | [ WITH CHECK | WITH NOCHECK ] ADD { < table_constraint > } [ ,...n ] | DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT { ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,...n ] } } < column_definition > ::= { column_name data_type } [ [ DEFAULT constant_expression ] [ WITH VALUES ] | [ IDENTITY [ (seed , increment ) [ NOT FOR REPLICATION ] ] ] ] [ ROWGUIDCOL ] [ COLLATE < collation_name > ] [ < column_constraint > ] [ ...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] | [ [ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] ] | CHECK [ NOT FOR REPLICATION ] ( logical_expression ) } < table_constraint > ::= [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( column [ ,...n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON {filegroup | DEFAULT } ] ] | FOREIGN KEY [ ( column [ ,...n ] ) ] REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ]

[ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | DEFAULT constant_expression [ FOR column ] [ WITH VALUES ] | CHECK [ NOT FOR REPLICATION ] ( search_conditions ) }

...Hola, queria saber si me puede ayudar; lo que pasa es que hize 4 tablas en visual basic 6.0... quiero saber si existe alguna manera de relacionarlas por el mismo vb... o si las tengo que hacer en access y llamarla desde el visual...como puedo hacerlo??... gracia por la ayuda... 08/04/2010

Experto Hola Debes relacionarlas en acces, es lo mejor, pero si las creaste por codigo desde VB, tambien puedes crear las relaciones por codigo de una manera similar a como creaste las tablas. Saludos,

You might also like