[求助]如何点击一按钮获取excel中的内容?
<p>我是想点按钮,弹出打开excel文件对话框,选择我要选取的xls文件,读取特定的内容。</p><p>但是打开excel文件对话框 和 如何引用这个选取的xls文件不是很会,谁来帮忙指点下</p><p>用 Set ExcelApp = Excel.Application.Dialogs.Item(xlDialogOpen).Show 好像出错。。 - -!</p><p></p> <p>用GetObject就可以获取选择的文件source_file</p><p>Set SourceFile = getObject(source_file)</p><p>sourceFile 定义为 new workbook</p><p>sourceFile.sheets(cc$).Range("a1")就可以获取文件source_file中电子表为cc$中的a1单元格的数据。</p> <p>帮忙看看,这个第一次允许还马马虎虎,第二次允许就报错</p><p>我的最终需要是将 ComboBox_BTNK 等下拉框取 excel里对应的值,程序中需要打开excel以获得内容,能否不打开excel文件获取信息?</p><p></p><p>Private Sub CMD_InputExcelData_Click()</p><p>Dim ExcelPath As Variant, ExcelName As String, m As Integer<br/>Dim ExcelApp As Excel.Application<br/>Dim ExcelSheet As Excel.Worksheet</p><p>On Error GoTo Err_Control</p><p><font color="#ff0000">ExcelPath = Excel.Application.GetOpenFilename("Excel Files (*.xls), *.xlsx") '获取打开文件全路径<br/></font>If ExcelPath = False Then Exit Sub '未选择文件时退出</p><p>For m = Len(ExcelPath) To 1 Step -1<br/> If Mid(ExcelPath, m, 1) = "\" Then Exit For<br/>Next m</p><p>ExcelName = Right(ExcelPath, Len(ExcelPath) - m)</p><p><font color="#ff0000">Set ExcelApp = CreateObject("excel.application")</font><br/>ExcelApp.Visible = True</p><p>ExcelApp.Workbooks.Open (ExcelPath)<br/>Set ExcelSheet = ExcelApp.Workbooks(ExcelName).Sheets(1) '指定excel中唯一的一个sheet</p><p>Dim FCATs As Variant, Fcodes As String<br/>Dim FcatSearch As Range, i As Integer</p><p>FCATs = Array("BTNK", "CDHR", "COMM", "EVLT", "FRPR", "HRTZ") <font color="#d52b2b"> '这个缩略了,实际有好几十个</font></p><p>For i = LBound(FCATs) To UBound(FCATs)<br/> Set FcatSearch = ExcelSheet.Range("B:B").Find(FCATs(i), , , xlWhole)<br/> Fcodes = "ComboBox_" & FCATs(i)<br/> Names.Add Name:=Fcodes, RefersTo:="=" & FcatSearch.Offset(, 1).Address '命名excel名称以方便调用 '这个还有其他更方便的调用方法吗?通过名称好像比较偏门。<br/>Next i</p><p>ComboBox_BTNK.Value = Names("ComboBox_BTNK").RefersToRange.Value<br/>ComboBox_CDHR.Value = Names("ComboBox_CDHR").RefersToRange.Value<br/>ComboBox_COMM.Value = Names("ComboBox_COMM").RefersToRange.Value<br/>ComboBox_EVLT.Value = Names("ComboBox_EVLT").RefersToRange.Value<br/>ComboBox_FRPR.Value = Names("ComboBox_FRPR").RefersToRange.Value<br/>ComboBox_HRTZ.Value = Names("ComboBox_HRTZ").RefersToRange.Value</p><p></p><p>ExcelApp.ActiveWorkbook.Close SaveChanges:=False<br/>ExcelApp.Quit</p><p>Set ExcelApp = Nothing</p><p>Exit Sub<br/>Err_Control:<br/> Debug.Print Err.Number<br/> MsgBox Err.Description</p><p>End Sub</p> <p>用获取的ExcelPath进行对对象的引用</p><p>Dim SourceFile As New Workbook <br/>Set SourceFile = GetObject(ExcelPath)<br/>Set ExcelSheet = SourceFile.Sheets(1) '引用第一个工作表</p><p>然后对B列遍历,ExcelSheet.Range("B"&n).Value读,返回需要列的对应值ExcelSheet.Range("XXX"&n).Value,储存。在下拉框里增加响应值。</p> 本帖最后由 作者 于 2009-8-16 0:44:19 编辑 <br /><br /> <p>Set SourceFile = GetObject(ExcelPath)<br/>Set ExcelSheet = SourceFile.Sheets(1) '指定唯一sheet</p><p>。。。</p><p>。。。</p><p>SourceFile.Close SaveChanges:=False<br/></p><p>最后 怎么引用excel程序的退出? </p> <p>sourcefile.close<br/>消去对象的引用set sourcefile = nothing</p><p>其实你最好别用<font color="#000000">Excel的GetOpenFilename,没发现弹出个打开文件的对话框都很慢么?用Vb本身的打开文件。</font></p> StartMe发表于2009-8-16 20:23:00static/image/common/back.gifsourcefile.close消去对象的引用set sourcefile = nothing其实你最好别用Excel的GetOpenFilename,没发现弹出个打开文件的对话框都很慢么?用Vb本身的打开文件。<p>怎么用vb本身的?</p> szuki发表于2009-8-16 22:09:00static/image/common/back.gif怎么用vb本身的?
<p></p><p>好几个月了,继续求问。</p> 用commondialog控件
页:
[1]