VBA读写EXCEL文档的一般方法.pdf
《VBA读写EXCEL文档的一般方法.pdf》由会员分享,可在线阅读,更多相关《VBA读写EXCEL文档的一般方法.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VBA 读写 EXCEL 文档的一般方法与 ACAD 的 VBA 一样,MS EXCEL 也提供 ActiveX 对象模型,在ACAD VBA开发中使用EXCEL 文档同样也要通过其ActiveX 对象模型。详细介绍EXCEL 的 ActiveX 对象模型恐怕离 ACAD 太远,也没有必要。在这只说说获取EXCEL 工作表指定单元格内容的方法。与 ACAD 的 ActiveX 对象模型一样,EXCEL 的 ActiveX 对象模型其顶层对象也是Application 对象,EXCEL.Application对象提供的Workbooks 工作簿集合对象包含有全部已经启动的EXCEL 工作簿对象,
2、我们可以使用Application 对象的 ActiveWorkbook 方法来获取当前活动的工作簿对象,也可以使用Workbooks(Index)方法来得到指定的工作簿对象。获取要操作的工作簿后,需要获取工作簿中的指定工作表(worksheet)才能访问到其中的指定单元格内容。EXCEL 的单元格的确定由行和列唯一指定,例如Range(B4)表示第 4 行第 2 列。下面的代码从EXCEL 文档中读出数据并在ACAD 图形的模型空间中自动根据EXCEL 文档内容绘图。行号是我加上的,真正的程序不需要它们。1 Sub ExcelRead()2 Dim ExcelApp As New Excel
3、.Application 3 ExcelApp.Workbooks.Open d:book1.xls,ReadOnly 4 Dim pt1(0 To 2)As Double,pt2(0 To 2)As Double 5 Dim Rad As Double 6 Dim i As Integer 7 i=2 8 With ExcelApp.ActiveWorkbook.Worksheets(sheet1)9 Do 10 Select Case.Range(A&i)11 Case 直线:12 pt1(0)=.Range(B&i)13 pt1(1)=.Range(C&i)14 pt1(2)=0 15
4、pt2(0)=.Range(D&i)16 pt2(1)=.Range(E&i)17 pt2(0)=0 18 ThisDrawing.ModelSpace.AddLine pt1,pt2 19 Case 圆:20 pt1(0)=.Range(B&i)21 pt1(1)=.Range(C&i)22 pt1(2)=0 23 Rad=.Range(D&i)24 ThisDrawing.ModelSpace.AddCircle pt1,Rad 25 Case Else:26 Exit Do 27 End Select 28 i=i+1 29 Loop 30 End With 31 ExcelApp.Wo
5、rkbooks.Close 32 ExcelApp.Quit 33 ThisDrawing.Application.Update 34 End Sub 运行这段代码需要加载EXCEL ActiveX对象模型。在ACAD VBA编辑器中选择“工具”菜单-“引用”,选择合适的Microsoft Excel Object Library。这段代码第2 行先声明并新建一个EXCEL.Application对象。新建EXCEL 对象,也可以调用 VB 库函数 CreateObject():Dim ExcelApp As Excel.Application Set ExcelApp=CreateObjec
6、t(Microsoft Excel)程序第 3 行调用 EXCEL 的 Application 对象的 Workbooks 集合的 Open 方法,以只读方式打开指定的EXCEL 文档。第 4-7 行声明一些变量。i 用于表明要操作的EXCEL 单元格的行号,通常EXCEL 文档第 1 行是表头说明,我们从第2 行开始读数据。程序第 8 行告诉编译程序以下对当前活动的EXCEL 文档的 Sheet1工作表进行操作。程序第 9 行到第 29行循环读取EXCEL 文档的 Sheet1工作表中对于自动绘图有用的单元格内容并在ACAD 模型空间中绘图。循环内部用Select Case语句根据EXCEL
7、 文档的第 1 列内容选择不同的绘图方法。为了说明问题,程序仅对直线和圆两种ACAD 图元对象进行操作并将其它对象出现作为循环退出条件。实际编程时可以对更多ACAD 图元对象进行操作。程序第 31、32 行释放不再使用的EXCEL 对象,第33行刷新 ACAD 图形以显示自动绘制的图形。下面的代码由用户在ACAD 图形中选择对象并将对象部分属性写入EXCEL 文档。Sub WriteExcel()Dim ExcelApp As New Excel.Application Dim ExcelWkbk As Excel.Workbook Set ExcelWkbk=ExcelApp.Workboo
8、ks.Add Dim sel As AcadSelectionSet Dim i As Integer i=2 On Error Resume Next Set sel=ThisDrawing.SelectionSets.Add(ssel)If Err Then Err.Clear Set sel=ThisDrawing.SelectionSets.Item(ssel)End If On Error GoTo 0 sel.SelectOnScreen Dim Ent As AcadEntity Dim pt1 As Variant,pt2 As Variant MsgBox ExcelWkbk
9、.Name With ExcelWkbk.Worksheets(sheet1)For Each Ent In sel Select Case UCase(Ent.ObjectName)Case ACDBLINE:.Range(A&i)=直线 pt1=Ent.StartPoint pt2=Ent.EndPoint .Range(B&i)=pt1(0).Range(c&i)=pt1(1).Range(D&i)=pt2(0).Range(E&i)=pt2(1)i=i+1 Case ACDBCIRCLE:.Range(A&i)=圆 pt1=Ent.Center .Range(B&i)=pt1(0).R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 读写 EXCEL 文档 一般 方法
限制150内