Xuất dữ liệu từ Grid của Vb6 sang Excel

Liên hệ QC

vantrungbn01

Thành viên mới
Tham gia
11/8/11
Bài viết
2
Được thích
0
Mình là thành viên mới, mình đang tìm hiểu về Vb6. Mình có thắc mắc là mình muốn đưa dữ liệu đang được hiển thị trong Grid của chương trình, và bây giờ mình muốn đưa nó ra Excel, vậy mình sẽ phải làm thế nào. Bạn nào biết thì chỉ mình với. Cảm ơn các bạn.
 
Help me....ai giúp mình với mọi người.................sao chẳng thấy ai nói hết vậy
 
Mình là thành viên mới, mình đang tìm hiểu về Vb6. Mình có thắc mắc là mình muốn đưa dữ liệu đang được hiển thị trong Grid của chương trình, và bây giờ mình muốn đưa nó ra Excel, vậy mình sẽ phải làm thế nào. Bạn nào biết thì chỉ mình với. Cảm ơn các bạn.
Chào bạn,
Có một vài điều cần làm rỏ:
1. VB6: Visual Basic 6?
2. Grid của bạn là gì?

Lê Văn Duyệt
 
Mình là thành viên mới, mình đang tìm hiểu về Vb6. Mình có thắc mắc là mình muốn đưa dữ liệu đang được hiển thị trong Grid của chương trình, và bây giờ mình muốn đưa nó ra Excel, vậy mình sẽ phải làm thế nào. Bạn nào biết thì chỉ mình với. Cảm ơn các bạn.

Nhân tiện đây tôi xin hướng dẫn cho bạn cách kết nối dữ liệu, đưa dữ liệu vào MSFlexGid, xuất dữ liệu ra Excel từ MSFlexGrid.

*) Chuẩn bị vẽ môi trường làm việc.
- Nhấn tổ hợp phím Ctrl+T để thêm MsFlexGrid như hình bên dưới.

0.jpg

- Vào Project, chọn references như hình sau:

2.jpg

- Vẽ 2 CommandButton
+ CommandButton1 có tên: cmdFillList, Caption: &Fill List
+ CommandButton2 có tên: cmdToExcel, Caption: &To Excel.
- Vẽ 1 MSFlexGrid có tên là MSFlexGrid1

1.jpg
*) Tạo 1 module kết nối với CSDL ví dụ CSDL đó tôi cho vào chung 1 folder và có tên là Database

Mã:
Public cnn As New ADODB.Connection

Public Sub Moketnoi()
  With cnn
     .ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\Database.mdb"
    .CursorLocation = adUseClient
    .Open
End With
If cnn.State = 0 Then
    MsgBox "Could not connect to database. Application will be closed.", 16, "Connection Error"
    End
End If

End Sub

*) Tạo 1 module nữa có để chép code về fill dữ liệu vào MSFlexGrid

Mã:
Public Sub Fill_FlexGrid(TenFexGrid As Control, _
                                      TenRecordset As Object, _
                                      TieuDeHayKhong As Boolean)
Dim lngCol As Long
Dim lngRow As Long
Dim booOldRedraw As Boolean

  With TenFexGrid
    .Cols = TenRecordset.Fields.Count
    .FixedCols = 0
    If TieuDeHayKhong Then
      .FixedRows = 1
      For lngCol = 0 To TenRecordset.Fields.Count - 1
        .TextMatrix(0, lngCol) = TenRecordset.Fields(lngCol).Name
      Next lngCol
    End If
    .Rows = .FixedRows + 1
    booOldRedraw = .Redraw
    .Redraw = False
    If TenRecordset.EOF Then
      .AddItem ""
      .RemoveItem .FixedRows
      .RowHeight(.FixedRows) = 0
    Else
      lngRow = .Rows
      Do While Not TenRecordset.EOF
        .AddItem ""
        For lngCol = 0 To TenRecordset.Fields.Count - 1
          .TextMatrix(lngRow, lngCol) = TenRecordset.Fields(lngCol).Value & ""
        Next lngCol
        lngRow = lngRow + 1
        TenRecordset.MoveNext
      Loop
      .RemoveItem .FixedRows

    End If
    .Redraw = booOldRedraw
    .Refresh
  End With

End Sub

*) Sau cùng chép code sau vào code trong form

Mã:
Private Sub cmdFillList_Click()
    Dim lsSQL As String
    Dim lrs As New ADODB.Recordset
       lsSQL = "SELECT * FROM tblData order by TP"
       lrs.Open lsSQL, cnn, 1, 3
    If lrs.EOF Then
      MsgBox "Khong co du lieu", vbCritical
      Set msgInfo.DataSource = lrs
    Else
   Call Fill_FlexGrid(MSFlexGrid1, lrs, True)
End If

End Sub

Private Sub cmdToExcel_Click()
    Dim xlObject    As Excel.Application
    Dim xlWB        As Excel.Workbook
           
        Set xlObject = New Excel.Application
        'Them moi 1 file excel
        Set xlWB = xlObject.Workbooks.Add
                   
        Clipboard.Clear 'Xoa Clipboard
        With MSFlexGrid1
            'Chon tat ca du lieu co trong MSFlexGid
            .Col = 0               'Tu cot thu nhat
            .Row = 0               'Tu dong thu nhat (Dong tieu de)
            .ColSel = .Cols - 1    'Chon tat ca cot
            .RowSel = .Rows - 1    'Chon tat ca dong
            Clipboard.SetText .Clip 'Dua vao Clipboard
            .Row = 0
        End With
               
        With xlObject.ActiveWorkbook.ActiveSheet
            .Range("A1").Select 'Chon cell A1 de chuan bi dan du lieu tu flexgid
            .Paste              'Dan tu clipboard
            .Range("A1").Select
        End With
        xlObject.Visible = True
End Sub

Private Sub Form_Load()
Moketnoi
End Sub

Bạn tham khảo thêm ví dụ ở file đính kèm nhé.
 

File đính kèm

  • MsFlexGrid to Excel.rar
    21.9 KB · Đọc: 384
Web KT
Back
Top Bottom