永发信息网

我有段vb程序是将excel的数据写入access的,请大家指教。

答案:2  悬赏:60  手机版
解决时间 2021-05-11 16:49
  • 提问者网友:饥饿走向夜
  • 2021-05-10 23:07

程序如下:

Private Sub Command1_Click()
Dim xlApp As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
Dim con As ADODB.Connection
Dim sql As String
Dim rs As New Recordset

'打开access表
Set con = New ADODB.Connection

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & "Data Source=D:\Temp\tres.mdb"

rs.Open "select * from aa", con, adOpenKeyset, adLockOptimistic

'打开excel表
On Error Resume Next
   '后台进程运行excel程序,并得到该工作簿
   Set xlBook = xlApp.Workbooks.Open("D:\Temp\bb.xls")
  
   xlApp.Visible = False 'excel表不显示
  
   '获得该工作簿的“sheet1”表
   Set xlSheet = xlBook.Sheets("sheet1")
  
    xlSheet.Select
   
   '抽取b2格子的数据并赋值给text1.text
  
   For intcountrow = 2 To xlSheet.UsedRange.Rows.Count '行循环
  
       For intcountco = 1 To xlSheet.UsedRange.Rows.Count '列循环
      
          rs.Fields(intcountco - 1) = xlSheet.Cells(intcountrow, intcountco).Value '将excel的数据写入access中
         
       Next intcountco
      
       rs.MoveNext
      
   Next intcountrow
  
    Text1.Text = xlSheet.UsedRange.Columns.Count  'xlSheet.Range("b2")
   
    Text2.Text = rs.RecordCount       'xlSheet.Cells(3, 5).Value
   
   Set xlSheet = Nothing
   Set xlBook = Nothing
   xlApp.Quit
   Set xlApp = Nothing
   Set rs = Nothing
   Set con = Nothing
   rs.Close
   con.Close
  
End Sub
我excel表格中有5个字段,2行数据,但是写入access中却只有1行数据,并且只有3列字段,我看不出错在哪里?

最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-05-10 23:28
只有3列字段,是因为:
For
intcountco = 1 To xlSheet.UsedRange.Rows.Count '列循环
改为
For
intcountco = 1 To xlSheet.UsedRange.columns.Count '列循环
就可以了。因为Rows正好是3行(连表头)。

只有一行数据,我看不出来,循环是对的,是否你rs.MoveNext用错了?
全部回答
  • 1楼网友:狂恋
  • 2021-05-10 23:43

For intcountrow = 2 To xlSheet.UsedRange.Rows.Count '行循环
  
    For intcountco = 1 To xlSheet.UsedRange.Rows.Count '列循环

问题应该在这里!

For intcountrow = 2 To xlSheet.UsedRange.Rows.Count '行循环
  
    For intcountco = 1 To xlSheet.UsedRange.Cols.Count '列循环

这个试下

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯