VBA读写EXCEL文档的一般方法

上传人:d**** 文档编号:184023579 上传时间:2023-02-01 格式:DOCX 页数:5 大小:18.08KB
收藏 版权申诉 举报 下载
VBA读写EXCEL文档的一般方法_第1页
第1页 / 共5页
VBA读写EXCEL文档的一般方法_第2页
第2页 / 共5页
VBA读写EXCEL文档的一般方法_第3页
第3页 / 共5页
资源描述:

《VBA读写EXCEL文档的一般方法》由会员分享,可在线阅读,更多相关《VBA读写EXCEL文档的一般方法(5页珍藏版)》请在装配图网上搜索。

1、四3 VBA读写EXCEL文档的一般方法与ACAD的VBA 一样,MS EXCEL也提供ActiveX对象模型,在ACAD VBA开发中使用E XCEL文档同样也要通过其ActiveX对象模型.详细介绍EXCEL的ActiveX对象模型恐怕离 ACAD太远,也没有必要。在这只说说获取EXCEL工作表指定单元格内容的方法。与ACAD的ActiveX对象模型一样,EXCEL的ActiveX对象模型其顶层对象也是Applicatio n对象,EXCELo Application对象提供的Workbooks工作簿集合对象包含有全部巳经启动的 EXCEL工作簿对象,我们可以使用Application对象

2、的ActiveWorkbook方法来获取当前活动的 工作簿对象,也可以使用Workbooks (Index)方法来得到指定的工作簿对象。获取要操作的 工作簿后,需要获取工作簿中的指定工作表(worksheet)才能访问到其中的指定单元格内 容。EXCEL的单元格的确定由行和列唯一指定,例如Range (B4)表示第4行第2列。 下面的代码从EXCEL文档中读出数据并在ACAD图形的模型空间中自动根据EXCEL文档 内容绘图。行号是我加上的,真正的程序不需要它们。1 Sub ExcelRead ()2 Dim ExcelApp As New Excel。Application3 ExcelApp

3、.Workbooks。Open d: book1。xls,,ReadOnly4 Dim pt1 (0 To 2) As Double,pt2(0 To 2) As Double5 Dim Rad As Double6 Dim i As Integer7 i = 28 With ExcelAppo ActiveWorkbooko Worksheets (sheetl)9 Do10 Select Case o Range(A & i)11 Case ”直线”:12 pt1(0) = o Range (B & i)13 pt1(1) = o Range(C & i)14 pt1 (2) = 015

4、pt2(0) = .Range(D&i)16 pt2(1) = .Range(E&i)17 pt2(0) = 018 ThisDrawing o ModelSpace o AddLine pt1, pt219 Case ”圆”:20 pt1(0) = o Range (B & i)21 pt1(1) = .Range(C & i)22 pt1(2) = 023 Rad = .Range (D & i)24 ThisDrawing o ModelSpace.AddCircle pt1, Rad25 Case Else:26 Exit Do27 End Select28 i = i + 129 L

5、oop30 End With31 ExcelApp.Workbooks.Close32 ExcelApp o Quit33 ThisDrawing o Application o Update34 End Sub运行这段代码需要加载EXCEL ActiveX对象模型。在ACAD VBA编辑器中选择“工具”菜单 一“引用”,选择合适的 Microsoft Excel Object Libraryo这段代码第2行先声明并新建一个EXCEL.Application对象。新建EXCEL对象,也可以调用 VB 库函数 CreateObject():Dim ExcelApp As Excel.Applic

6、ationSet ExcelApp = CreateObject(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语句根据

7、EXCEL文档的第1列内容选择不同的绘图方法。为了说明 问题,程序仅对直线和圆两种ACAD图元对象进行操作并将其它对象出现作为循环退出条 件.实际编程时可以对更多ACAD图元对象进行操作。程序第31、32行释放不再使用的EXCEL对象,第33行刷新ACAD图形以显示自动绘制的 图形。下面的代码由用户在ACAD图形中选择对象并将对象部分属性写入EXCEL文档。Sub WriteExcel ()Dim ExcelApp As New Excel.ApplicationDim ExcelWkbk As Excel.WorkbookSet ExcelWkbk = ExcelApp.Workbooks。

8、AddDim sel As AcadSelectionSetDim i As Integeri = 2On Error Resume NextSet sel = ThisDrawing.SelectionSets.Add(ssel”)If Err ThenErr。ClearSet sel = ThisDrawing。SelectionSets。Item(”ssel)End IfOn Error GoTo 0sel.SelectOnScreenDim Ent As AcadEntityDim pt1 As Variant, pt2 As VariantMsgBox ExcelWkbko Name

9、With ExcelWkbk.Worksheets(sheet1”)For Each Ent In selSelect Case UCase(Ent.ObjectName)Case ”ACDBLINE”:o Range(A” & i)=直线”pt1 = Ent.StartPointpt2 = Ento EndPoint.Range(B” & i) = pt1 (0).Range (c & i) = pt1 (1).Range (D & i) = pt2 (0)o Range(E” & i) = pt2(1)i = i + 1Case ”ACDBCIRCLE”:.Range(”A” & i)=

10、”圆”pt1 = Ento Center.Range(B & i) = pt1(0)o Range(C & i) = pt1(1).Range (”D” & i) = Ent.Radiusi = i + 1Case Else:End SelectNext EntEnd WithExcelAppo ActiveWorkbook.SaveAs ”d:book1 o xls”ExcelApp.Workbooks.CloseExcelApp.Quitsel.DeleteEnd SubJLVBA读写EXCEL文档的一般方法与ACAD的VBA 一样,MS EXCEL也提供ActiveX对象模型,在ACAD

11、 VBA开发中使用 EXCEL文档同样也要通过其ActiveX对象模型。详细介绍EXCEL的ActiveX对象模型恐怕离ACAD太远,也没有必要。在这只说说获取EXCEL工作表指定单元格内容的方法。与ACAD的ActiveX对象模型一样,EXCEL的ActiveX对象模型其顶层对象也是Application 对象,EXCELo Application对象提供的Workbooks工作簿集合对象包含有全部巳经启动的EX CEL工作簿对象,我们可以使用Application对象的ActiveWorkbook方法来获取当前活动的工作 簿对象,也可以使用Workbooks (Index)方法来得到指定的

12、工作簿对象.获取要操作的工作簿 后,需要获取工作簿中的指定工作表(worksheet)才能访问到其中的指定单元格内容。EXCEL 的单元格的确定由行和列唯一指定,例如Range (” B4”)表示第4行第2列。下面的代码从EXCEL文档中读出数据并在ACAD图形的模型空间中自动根据EXCEL文档内 容绘图.行号是我加上的,真正的程序不需要它们。12345678910111213141516171819202122232425SubExcelRead ()Dim ExcelApp As New Excel.ApplicationExcelAppo Workbooks o Open d:book1

13、.xls ”, ReadOnlyDim pt1 (0 To 2) As Double, pt2(0 To 2) As DoubleDim Rad As DoubleDim i As Integeri = 2With ExcelApp.ActiveWorkbook.Worksheets(sheet1”)DoSelect Case 。Range ( A”& i)Case ”直线”:pt1 (0)= .Range (B& i)pt1 (1) = o Range( C & i)pt1(2) = 0pt2(0)= .Range(D & i)pt2 (1) = o Range ( E & i)pt2(0)

14、 = 0ThisDrawingo ModelSpace o AddLine pt1, pt2Case 圆”:pt1(0) = .Range(B & i)pt1(1) = .Range(C & i)pt1(2) = 0Rad = o Range( D & i)ThisDrawing.ModelSpaceo AddCircle pt1, Rad Case Else:26 Exit Do27 End Select28 i = i + 129 Loop30 End With31 ExcelApp.Workbooks.Close32 ExcelApp.Quit33 ThisDrawingo Applic

15、ation.Update34 End Sub运行这段代码需要加载EXCEL ActiveX对象模型。在ACAD VBA编辑器中选择“工具”菜 单- “引用”,选择合适的 Microsoft Excel Object Libraryo这段代码第2行先声明并新建一个EXCELo Application对象.新建EXCEL对象,也可以调用V B 库函数 CreateObject ():Dim ExcelApp As Excel o ApplicationSet ExcelApp = CreateObject(Microsoft Excel)程序第3行调用EXCEL的Application对象的Wor

16、kbooks集合的Open方法,以只读方式打开指定的EXCEL文档。第4-7行声明一些变量 i用于表明要操作的EXCEL单元格的行号,通 常EXCEL文档第1行是表头说明,我们从第2行开始读数据。程序第8行告诉编译程序以下对当前活动的EXCEL文档的Sheet1工作表进行操作。程序第9行到第29行循环读取EXCEL文档的Sheet1工作表中对于自动绘图有用的单元格内容 并在ACAD模型空间中绘图。循环内部用Select Case语句根据EXCEL文档的第1列内容选择不同的绘图方法。为了说明 问题,程序仅对直线和圆两种ACAD图元对象进行操作并将其它对象出现作为循环退出条件。实际编程时可以对更多

17、ACAD图元对象进行操作。程序第31、32行释放不再使用的EXCEL对象,第33行刷新ACAD图形以显示自动绘制的图 形。下面的代码由用户在ACAD图形中选择对象并将对象部分属性写入EXCEL文档。Sub WriteExcel ()Dim ExcelApp As New Excel.ApplicationDim ExcelWkbk As Excel.WorkbookSet ExcelWkbk = ExcelApp.Workbooks。Add Dim sel As AcadSelectionSetDim i As Integer i=2On Error Resume NextSet sel =

18、ThisDrawing.SelectionSets.Add( ssel)If Err ThenErr。ClearSet sel = ThisDrawing。SelectionSets.Item(ssel” ) End IfOn Error GoTo 0selo SelectOnScreenDim Ent As AcadEntityDim pt1 As Variant, pt2 As VariantMsgBox ExcelWkbko NameWith ExcelWkbko Worksheets (sheetl)For Each Ent In selSelect Case UCase (Ent。O

19、bjectName) Case ” ACDBLINE”:o Range (A & i)= ”直线”ptl = Ent.StartPointpt2 = Ento EndPoint.Range(” B”& i)= ptl (0).Range (” c”& i)= pt1(1).Range(” D”& i) = pt2 (0).Range(” E & i)= pt2 (1)i = i + 1Case ”ACDBCIRCLE:.Range (A & i)= ”圆”pt1 = Ent.Center.Range (”B & i)= pt1(0).Range (C & i)= pt1(1).Range(”D”& i) = Ent.Radiusi = i + 1 Case Else: End Select Next Ent End WithExcelApp.ActiveWorkbook.SaveAs ” d:book1.xls”ExcelApp.Workbooks o CloseExcelApp o Quit selo Delete End Sub

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!