乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 169|回复: 9

求助!!!vba读取excel表格数据问题。

[复制链接]

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-11-22 08:52:00 | 显示全部楼层 |阅读模式
Public Function guimianshejigaocheng()
Dim excelApp As Excel.Application
    Dim excelSheet As Excel.Worksheet
    Dim strFile As String
    strFile = ThisDrawing.Application.VBE.ActiveVBProject.fileName
    Set excelApp = CreateObject("Excel.Application")
    excelApp.Visible = False
    excelApp.Workbooks.Open Left$(strFile, Len(strFile) - Len("ex01.dvb")) & "\Excel\demo.xls"
    Set excelSheet = excelApp.ActiveWorkbook.Sheets("Sheet1")
    Dim text As AcadText
  
  Dim i As Integer, k As Integer
  For i = 2 To 111
    Dim a As Variant, e As String
     a = Cells(i, 3).Value
    e = a
   
    k = 910 + 1.5 + (i - 1) * 10
   Dim insert(0 To 2) As Double
   
   insert(0) = k - 12
   insert(1) = 245 - 4 + 35 - 2.5 + 10
   insert(2) = 0
    Dim textobj As AcadText
    Set textobj = ThisDrawing.ModelSpace.AddText(e, insert, 2)
  textobj.Rotation = 3.14159 / 2
    Next i
   
    ' 退出Excel应用程序
    excelApp.Quit
End Function
我用这段代码标注里程,现在问题是每次我都需要给一个循环范围,有没有办法让vba读到最后一条记录自动停止?
回复

使用道具 举报

14

主题

180

帖子

12

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
236
发表于 2011-11-22 12:23:00 | 显示全部楼层
可以用do while语句嘛.也可以用无限循环的for语句,用if条件判断,满足条件跳出循环.
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-11-22 15:57:00 | 显示全部楼层

多谢回复,无限循环的怎么做?是不是把循环的上限改成一个很大的数?比如for i=2 to 1000000?
回复

使用道具 举报

16

主题

59

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2011-11-22 20:26:00 | 显示全部楼层
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value
改成如下:
Dim a As Variant, e As String
For i = 2 To excelSheet.[C65536].End(xlUp)
a = excelSheet.Cells(i, 3).Value
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-11-23 08:52:00 | 显示全部楼层

谢谢
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-11-23 08:59:00 | 显示全部楼层

C65536是什么意思?不管是a取哪列数据,i的循环上限都是这个语句吗?
回复

使用道具 举报

16

主题

59

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2011-11-23 20:31:00 | 显示全部楼层
这是Excel2003,它只有最多65536行。更加自动适应Excel版本的要复杂些,2007版的到网上搜索一下,反正数字大多了,应该是C1048576.做成自适应Excel版本的:Cells(excelApp.Rows.Count, 3),也就是从C列最后一行开始向上搜索第一个用数据的行数。你这纯粹是对Excel编程。我开发测绘软件时都这样。注意,数据不能超过起始行2,也就是要用数据才行,否则搜索到1。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-11-24 16:50:00 | 显示全部楼层

好的,谢谢。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2011-11-25 09:20:00 | 显示全部楼层
我现在也要解决这样的问题。。。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2011-12-1 09:56:00 | 显示全部楼层

你解决了吗?会用excel中的数据画多段线吗?加我qq吧,416958890 身份验证输入vba
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-30 17:26 , Processed in 1.223338 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表