编一个小程序,用VB读取EXCEL表中SHEET1中的数据.
A列数据--客户名称,B列--产品名称,C列--产品单价.一个客户有很多种产品.现想编一个小程序,随便选几个客户的一些产品显示打印出来.
如:选中客户A的产品A1,
   选中客户A的产品A2,
   选中客户B的产品A3
   ....
   选中这些产品显示出来后再打印出来.
   我想把客户名称读取到COMBOBOX1中(去掉重复),然后根据COMBOBOX1中读取的客户名称去选取它的产品到COMBOBOX2中,然后在下方显示出来(想用表格的式样,但不知用什么控件可以实现),然后再打印出来.
   想要一套完整的源代码,从读取EXCEL表到打印出结果.
   新手,谢谢!

解决方案 »

  1.   


        Dim objExcelFile As Excel.Application
        Dim objWorkBook As Excel.Workbook
        Dim objImportSheet As Excel.Worksheet
        Dim strFileName As String
        Dim intLastColNum As Integer
        Dim intLastRowNum As Long
        Dim CountI As Long
        dim j as integer
        dim Inti as integer    strFileName = CommonDialog1.FileName   '引用Commondialog控件
        Set objExcelFile = New Excel.Application
        objExcelFile.DisplayAlerts = False
        Set objWorkBook = objExcelFile.Workbooks.Open(strFileName)    For j = 1 To objWorkBook.Sheets.Count  '从第一个Sheet开始读,这里读取Excel中所有的Sheet
            Set objImportSheet = objWorkBook.Sheets(j)
            '3 获取Excel有效区域的行和列数
             intLastColNum = objImportSheet.UsedRange.Columns.Count
            intLastRowNum = objImportSheet.UsedRange.Rows.Count
            If MSHFlexGrid1.Cols < intLastColNum Then MSHFlexGrid1.Cols = intLastColNum  '确保列数不会出错
       
            '4 逐行读取Excel中数据            For CountI = 2 To intLastRowNum
                    If Trim$(objImportSheet.Cells(intCountI, 1).Value) <> "" Then
                        With MSHFlexGrid1
                            .Rows = .Rows + 1
                            For Inti = 1 To intLastColNum
                                ''每次总是以表格的实际行数来填充,可以防止不必要的错误,即.rows-2
                                .TextMatrix(.Rows - 2, Inti - 1) = Trim$(objImportSheet.Cells(CountI, Inti).Value)                        Next Inti
                        End With
                    End If
                Next 
        Next
      

  2.   

    正在编呢.把客户名称读取到COMBOBOX1中(去掉重复),怎么实现呢?
      

  3.   

    Private Sub Command1_Click()
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset    Set cn = New ADODB.Connection
        cn.CursorLocation = adUseClient
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\f1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"    Set rs = New ADODB.Recordset
        rs.Open "select 客户名称 from [sheet1$] group by 客户名称", cn, 2, 2
        
        While Not rs.EOF
            Combo1.AddItem rs.Fields(0)
            rs.MoveNext
        Wend
        
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub