| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1863 人关注过本帖
标题:vb中关于读取excel公式的问题,很疑惑啊,求教!
只看楼主 加入收藏
yyh888
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
vb中关于读取excel公式的问题,很疑惑啊,求教!
就是我的jdbg.xls中sheet1的D3里有公式“=B3*0.6+C3*0.4”,用该文件的vba可以读出来。但是工作需要从vb6程序中读出,我不会了,帮帮忙! 原帖发在百度提问http://zhidao.baidu.com/question/1605686107571048427.html
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 百度提问 excel 
2015-05-25 11:38
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:5 
range.formula用法是正确的,有没有定义jdbg

大开眼界
2015-05-25 12:44
yyh888
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-25
收藏
得分:0 
有过定义jdbg,麻烦看一下主程序
程序代码:
     Private fenshu As Integer
     Private ea As Excel.Application '代表excel程序
     Private bzbg As Excel.Workbook '代表excelworkbook(也就是excel工作簿文件 .xls  .xlsx)
     Private jdbg As Excel.Workbook '代表excelworkbook(也就是excel工作簿文件 .xls  .xlsx)
     Private df As Long                                         '得分临时变量
     Private kd As String                                      '考点
     Private pf As Boolean                                     '判分变量
     Private bg As String  '所在表格
     Private wz As String  '所在位置
     Private sl As String

Private Sub Command1_Click()
     Dim i As Long
     Dim ti As String                                       'excel题
     Dim khd() As String                                    '考核点数组
     Dim xkhd() As String                                   '小考核点数组
     Dim weizhi() As String                                 '批阅位置
Set ea = New Excel.Application                                    'ea 实例化
Set bzbg = ea.Workbooks.Open("D:\未识别\Excel\bzbg.xls")   'bzbg对象标准表格
Set jdbg = ea.Workbooks.Open("D:\未识别\Excel\jdbg.xls")   'jdbg对象解答表格
     

bg = "Sheet1"
wz = "A1:A1"
sl = "本月票房统计"
       
       Call E单元格内容(bg, wz, sl)
        Call 判分
MsgBox (pf)
'Debug.Print kd, fenshu
 
     
     
    On Error Resume Next                         '强制执行下一步
    Set jdbg.Worksheets("Sheet1") = Nothing      '关闭Sheet
    Set bzbg.Worksheets("Sheet1") = Nothing      '关闭Sheet
    jdbg.Close                                   '关闭解答文档
    bzbg.Close                                   '关闭标准文档
    ea.Quit                                      '退出Word应用程序对象
    Set jdbg = Nothing                           '释放jdwd变量
    Set bzbg = Nothing                           '释放bzwd变量
    Set ea = Nothing                             '释放wa变量
End Sub
Public Sub E单元格内容(bg As String, wz As String, sl As String)
     pf = True
     On Error Resume Next                                                                '强制执行下一步
   If jdbg.Worksheets("" & bg & "").Range("" & wz & "").Text <> sl Then pf = False       '不一致扣分
End Sub
Public Sub 判分()                                '判分
       If pf = True Then fenshu = fenshu + df
       If pf = False Then 'Call 结果输出(df & "分的" & kd)
       End If
End Sub




[ 本帖最后由 yyh888 于 2015-5-25 14:09 编辑 ]
2015-05-25 14:04
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 3楼 yyh888
Call E单元格内容(bg, wz, sl)时,三个参数分别是"Sheet1","A1:A1","本月票房统计"
哪儿有文件簿?
Option Explicit
Dim EXAPP As Excel.Application
Dim WB As Excel.Workbook
Dim sht As Excel.Worksheet
Private Sub Command1_Click()
  Form1.Caption = Show_Formula("sheet4", "c10")
End Sub
Private Sub Form_Load()
  Set EXAPP = CreateObject("excel.application")
  Set WB = EXAPP.Workbooks.Open("c:\test.xlsx")
End Sub
Function Show_Formula(str1 As String, str2 As String) As String
  Show_Formula = WB.Worksheets(str1).Range(str2).Formula
End Function
Private Sub Form_Unload(Cancel As Integer)
  WB.Close
  Set sht = Nothing
  Set WB = Nothing
  Set EXAPP = Nothing
End Sub
注意看红色那行

[ 本帖最后由 lianyicq 于 2015-5-25 14:44 编辑 ]

大开眼界
2015-05-25 14:10
yyh888
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-25
收藏
得分:0 
感谢版主的指点,受益匪浅!本人才疏学浅,vb还未入门又被逼着上马做学生office操作题批阅的软件,很多逻辑和语法的错误。我先研究着,不懂再来请教。
2015-05-25 15:04
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
参照4楼我也模仿做了一个  不过都引入com库了  为啥还要import呢   (vs2010环境)

程序代码:
Imports Microsoft.Office.Interop


 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim EXAPP As Excel.Application
        Dim WB As Excel.Workbook
        Dim sht As Excel.Worksheet
        Dim str As String
        EXAPP = CreateObject("excel.application")
        WB = EXAPP.Workbooks.Open("d:\test.xls")
        str = WB.Worksheets("sheet1").Range("f4").Formula.ToString()
        MsgBox(str)

 End Sub

DO IT YOURSELF !
2015-05-25 15:06
yyh888
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-25
收藏
得分:0 
感谢各位的大力支持!不过我发现问题所在了,害得我浪费了一天的光阴。
    我的代码很丑陋,不过是可以运行的,我用同样格式的编写了三十多个函数,调用正常。
    这个问题出在:jdwd.xls有三个sheets,出题人为了迷惑学生,把这三个都做得很相似。做题应该在sheet1里完成,可是故意把sheet2当作当前表格,一打开jdwd就出现sheet2,如果不细致观察直接在上面做题则会得零分。
    我为了赶进度,也不注意观察,所以悲剧了~~~~~ 用VBA显示D3单元格是正常的,有公式啊!因为vba显示的是活动表格。用vb6调用是没有的,因为调的是sheet1的,当然就没有了。
    出题人,你好  奸 诈 呀!同情学生
2015-05-25 18:36
快速回复:vb中关于读取excel公式的问题,很疑惑啊,求教!
数据加载中...
 
   



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

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