明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4266|回复: 11

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

  [复制链接]
发表于 2011-11-22 08:52:34 | 显示全部楼层 |阅读模式
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读到最后一条记录自动停止?
发表于 2011-11-22 12:23:49 | 显示全部楼层
可以用do while语句嘛.也可以用无限循环的for语句,用if条件判断,满足条件跳出循环.
 楼主| 发表于 2011-11-22 15:57:32 | 显示全部楼层
VBALISPER 发表于 2011-11-22 12:23
可以用do while语句嘛.也可以用无限循环的for语句,用if条件判断,满足条件跳出循环.

多谢回复,无限循环的怎么做?是不是把循环的上限改成一个很大的数?比如for i=2 to 1000000?
发表于 2011-11-22 20:26:08 | 显示全部楼层
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

评分

参与人数 1明经币 +1 收起 理由
VBALISPER + 1 赞一个!

查看全部评分

 楼主| 发表于 2011-11-23 08:52:46 | 显示全部楼层
黄玉宏 发表于 2011-11-22 20:26
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value

谢谢
 楼主| 发表于 2011-11-23 08:59:51 | 显示全部楼层
黄玉宏 发表于 2011-11-22 20:26
For i = 2 To 111
Dim a As Variant, e As String
a = Cells(i, 3).Value

C65536是什么意思?不管是a取哪列数据,i的循环上限都是这个语句吗?
发表于 2011-11-23 20:31:38 | 显示全部楼层
这是Excel2003,它只有最多65536行。更加自动适应Excel版本的要复杂些,2007版的到网上搜索一下,反正数字大多了,应该是C1048576.做成自适应Excel版本的:Cells(excelApp.Rows.Count, 3),也就是从C列最后一行开始向上搜索第一个用数据的行数。你这纯粹是对Excel编程。我开发测绘软件时都这样。注意,数据不能超过起始行2,也就是要用数据才行,否则搜索到1。
 楼主| 发表于 2011-11-24 16:50:51 | 显示全部楼层
黄玉宏 发表于 2011-11-23 20:31
这是Excel2003,它只有最多65536行。更加自动适应Excel版本的要复杂些,2007版的到网上搜索一下,反正数字大 ...

好的,谢谢。
发表于 2011-11-25 09:20:23 | 显示全部楼层
我现在也要解决这样的问题。。。
 楼主| 发表于 2011-12-1 09:56:30 | 显示全部楼层
尕武子 发表于 2011-11-25 09:20
我现在也要解决这样的问题。。。

你解决了吗?会用excel中的数据画多段线吗?加我qq吧,416958890 身份验证输入vba
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 18:17 , Processed in 0.170052 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表