我在excel文档中有一个范围,我需要将其提取到列表框中。我可以通过.txt文件执行此操作,但实际上更愿意从excel中获取信息。怎么样?
我正在使用Visual Studio 2010,到目前为止我的代码是:
Public class1 Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objXLApp As Excel.Application
Dim intLoopCounter As Integer
objXLApp = New Excel.Application
With objXLApp
.Workbooks.Open("C:\report.xls")
.Workbooks(1).Worksheets(1).Select()
For intLoopCounter = 1 To CInt(.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row)
List1.AddItem.Range("A" & intLoopCounter)
Next intLoopCounter
.Workbooks(1).Close(False)
.Quit()
End With
objXLApp = Nothing
End Sub
当我构建这个程序时,我得到两个错误;
答案 0 :(得分:0)
我不是真的做VB,但我认为你应该用以下方法打破循环的绑定:
var data = .ActiveSheet.Range("A1:A"&.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row).Value2
List1.DataSource = data
List1.DataBind()
答案 1 :(得分:0)
您可以尝试(假设您希望将整个Range
对象绑定到列表而不仅仅是显示的值。
For intLoopCounter = 1 To CInt(.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row)
List1.AddItem .ActiveSheet.Range("A" & intLoopCounter)
Next intLoopCounter
修改强>
此外,您应该使用Set objXLApp = New Excel.Application
。您错过了set
关键字。
这也不是您在VBA中声明类的方式。你创建一个新类,就像你创建一个新模块一样。该类在属性窗格中命名。
这也不是VBA中事件的处理方式。如果要处理button click
Button1
事件,则事件处理程序必须类似于
Private Sub Button1_Click()
End Sub
它必须与对象名称和正在处理的事件的名称相同。它也必须位于用户表单的代码页上,并且没有参数。 VBA在这方面确实缺乏。
希望这有帮助!