注册 登录
编程论坛 VB6论坛

【求大神教小白】关于vb打开excel并计算保存的问题

唐小豆 发布于 2017-05-25 16:58, 1748 次点击
本人VB新手,现在想编写一个程序,大致想做到以下效果:
1.打开一个excel在commondialog中
2.对已打开在commondialog的excel进行第一列计算,并将结果输出到第二列并保存
现小弟大致写了下语句,但是错误很多,而且也不知道怎么改(本人真心是小白,所以特来论坛求教!)

Private Sub Command1_Click()

On Error GoTo ErrHandler
CommonDialog1.Filter = "Microsoft office Excel 文件(*.xls)|*.xls"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Exit Sub
ErrHandler:
End Sub

Private Sub Command2_Click()

Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet

Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = Workbooks.Open(CommonDialog1)
xlsBook.Visible = False
Set xlsSheet = xlsBook.Worksheets("Sheet1")

Dim N
For N = 1 To Application.CountA(ActiveSheet.Range("A:A"))
Cells(N, 2) = Cells(N, 1) * Cells(N, 1) + 10
xlsBook.Save
Next
xlsBook.Close
End Sub
真心求助群里各位大神求教!拜托拜托
3 回复
#2
xiangyue05102017-05-25 21:04
Private Sub Command2_Click()

Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet

Set xlsApp = CreateObject("Excel.Application")

[quote]Set xlsBook = Workbooks.Open(CommonDialog1)

这里Workbooks子对象根本是凭空出来的么。应该是 xlsApp.Workbooks.Open

For N = 1 To Application.CountA(ActiveSheet.Range("A:A"))  
Cells(N, 2) = Cells(N, 1) * Cells(N, 1) + 10
xlsBook.Save
Next

这里也是一样,直接使用子对象。也就是说正常应该是AAA.BBB   BBB是AAA的子对象,不能直接把BBB写出来就认为可以了
我估计你是从VBA直接拿来用的。
改成下面这样
程序代码:

Set xlsheet = xlsBook.Worksheets(1) '设置活动工作表
For N = 1 To Application.worksheetsfunction.CountA(xlsheet.Range("A:A")) '这句不大确定是否这样做是对的,网上有这么写的,但是目前没有环境调试,可以试试下面的另外两种方式
'
替换方式1
'
For N = 1 To xlsApp.worksheetsfunction.CountA(xlsheet.Range("A:A"))
'
替换方式2 注意是两行
'
xlsheet.Cells(1, 5).Formula = "=CountA(A:A)"                                                                  
'
For N = 1 To xlsheet.Cells(1, 5)
'
替换方式3
'
For N = 1 To xlsheet.Range(″A:A″).Rows.Count
xlsheet.Cells(N, 2) = xlsheet.Cells(N, 1) * xlsheet.Cells(N, 1) + 10
xlsBook.Save
Next
#3
唐小豆2017-05-26 13:52
回复 2楼 xiangyue0510
版主大大您好,我已经按照您教我的修改了我的代码,但是运行时报错,显示“实时错误13 类型不匹配”,求帮助!修改后代码及报错地方如下:
Private Sub Command2_Click()

Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet

Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Open(CommonDialog1)
xlsBook.Visible = False
Set xlsSheet = xlsBook.Worksheets("Sheet1")

Dim N
For N = 1 To xlsSheet.Range("A:A").Rows.Count
xlsSheet.Cells(N, 2) = xlsSheet.Cells(N, 1) * xlsSheet.Cells(N, 1) + 10
xlsBook.Save
Next
xlsBook.Close
End Sub
只有本站会员才能查看附件,请 登录
#4
HVB62017-05-26 15:49
回复 3楼 唐小豆
别忘记“引用”。
1