明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3158|回复: 8

[求助]如何点击一按钮获取excel中的内容?

[复制链接]
发表于 2009-8-14 19:46:00 | 显示全部楼层 |阅读模式

我是想点按钮,弹出打开excel文件对话框,选择我要选取的xls文件,读取特定的内容。

但是打开excel文件对话框 和 如何引用这个选取的xls文件不是很会,谁来帮忙指点下

用 Set ExcelApp = Excel.Application.Dialogs.Item(xlDialogOpen).Show 好像出错。。    - -!

发表于 2009-8-14 23:53:00 | 显示全部楼层

用GetObject就可以获取选择的文件source_file

Set SourceFile = getObject(source_file)

sourceFile 定义为 new workbook

sourceFile.sheets(cc$).Range("a1")就可以获取文件source_file中电子表为cc$中的a1单元格的数据。

 楼主| 发表于 2009-8-15 12:13:00 | 显示全部楼层

帮忙看看,这个第一次允许还马马虎虎,第二次允许就报错

我的最终需要是将 ComboBox_BTNK  等下拉框取 excel里对应的值,程序中需要打开excel以获得内容,能否不打开excel文件获取信息?

Private Sub CMD_InputExcelData_Click()

Dim ExcelPath As Variant, ExcelName As String, m As Integer
Dim ExcelApp As Excel.Application
Dim ExcelSheet As Excel.Worksheet

On Error GoTo Err_Control

ExcelPath = Excel.Application.GetOpenFilename("Excel Files (*.xls), *.xlsx")    '获取打开文件全路径
If ExcelPath = False Then Exit Sub  '未选择文件时退出

For m = Len(ExcelPath) To 1 Step -1
    If Mid(ExcelPath, m, 1) = "\" Then Exit For
Next m

ExcelName = Right(ExcelPath, Len(ExcelPath) - m)

Set ExcelApp = CreateObject("excel.application")
ExcelApp.Visible = True

ExcelApp.Workbooks.Open (ExcelPath)
Set ExcelSheet = ExcelApp.Workbooks(ExcelName).Sheets(1)  '指定excel中唯一的一个sheet

Dim FCATs As Variant, Fcodes As String
Dim FcatSearch As Range, i As Integer

FCATs = Array("BTNK", "CDHR", "COMM", "EVLT", "FRPR", "HRTZ")       '这个缩略了,实际有好几十个

For i = LBound(FCATs) To UBound(FCATs)
    Set FcatSearch = ExcelSheet.Range("B:B").Find(FCATs(i), , , xlWhole)
    Fcodes = "ComboBox_" & FCATs(i)
    Names.Add Name:=Fcodes, RefersTo:="=" & FcatSearch.Offset(, 1).Address    '命名excel名称以方便调用    '这个还有其他更方便的调用方法吗?通过名称好像比较偏门。
Next i

ComboBox_BTNK.Value = Names("ComboBox_BTNK").RefersToRange.Value
ComboBox_CDHR.Value = Names("ComboBox_CDHR").RefersToRange.Value
ComboBox_COMM.Value = Names("ComboBox_COMM").RefersToRange.Value
ComboBox_EVLT.Value = Names("ComboBox_EVLT").RefersToRange.Value
ComboBox_FRPR.Value = Names("ComboBox_FRPR").RefersToRange.Value
ComboBox_HRTZ.Value = Names("ComboBox_HRTZ").RefersToRange.Value

ExcelApp.ActiveWorkbook.Close SaveChanges:=False
ExcelApp.Quit

Set ExcelApp = Nothing

Exit Sub
Err_Control:
  Debug.Print Err.Number
  MsgBox Err.Description

End Sub

发表于 2009-8-15 21:34:00 | 显示全部楼层

用获取的ExcelPath进行对对象的引用

Dim SourceFile As New Workbook    
Set SourceFile = GetObject(ExcelPath)
Set ExcelSheet = SourceFile.Sheets(1)  '引用第一个工作表

然后对B列遍历,ExcelSheet.Range("B"&n).Value读,返回需要列的对应值ExcelSheet.Range("XXX"&n).Value,储存。在下拉框里增加响应值。

 楼主| 发表于 2009-8-15 22:03:00 | 显示全部楼层
本帖最后由 作者 于 2009-8-16 0:44:19 编辑

Set SourceFile = GetObject(ExcelPath)
Set ExcelSheet = SourceFile.Sheets(1)  '指定唯一sheet

。。。

。。。

SourceFile.Close SaveChanges:=False

最后 怎么引用excel程序的退出? 

发表于 2009-8-16 20:23:00 | 显示全部楼层

sourcefile.close
消去对象的引用set sourcefile = nothing

其实你最好别用Excel的GetOpenFilename,没发现弹出个打开文件的对话框都很慢么?用Vb本身的打开文件。

 楼主| 发表于 2009-8-16 22:09:00 | 显示全部楼层
StartMe发表于2009-8-16 20:23:00sourcefile.close消去对象的引用set sourcefile = nothing其实你最好别用Excel的GetOpenFilename,没发现弹出个打开文件的对话框都很慢么?用Vb本身的打开文件。

怎么用vb本身的?

 楼主| 发表于 2009-11-23 12:47:00 | 显示全部楼层
szuki发表于2009-8-16 22:09:00怎么用vb本身的?

好几个月了,继续求问。

发表于 2009-11-23 20:31:00 | 显示全部楼层
用commondialog控件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:45 , Processed in 0.169887 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表