标题:【求大神教小白】关于vb打开excel并计算保存的问题
只看楼主
唐小豆
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-5-25
结帖率:0
已结贴  问题点数:20 回复次数:3 
【求大神教小白】关于vb打开excel并计算保存的问题
本人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
真心求助群里各位大神求教!拜托拜托
搜索更多相关主题的帖子: Microsoft office excel Excel 
2017-05-25 16:58
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:934
专家分:5244
注 册:2015-8-10
得分:10 
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
2017-05-25 21:04
唐小豆
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-5-25
得分:0 
回复 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
2017-05-26 13:52
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:320
专家分:561
注 册:2013-10-30
得分:10 
回复 3楼 唐小豆
别忘记“引用”。
2017-05-26 15:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477361-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.433557 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved