查找到文字并在其后加excel单元格内的文字?
本帖最后由 作者 于 2009-8-6 0:47:21 编辑 <br /><br /> <p>有下面一个程序,我怎么编也编不好,哪位老兄能帮我编一下,最好用VBA,拜谢了!!!</p><p>设有一个excel表name.xls如下,上行为姓名,下行为年龄,</p><p> A B </p><p>1 张三 30 </p><p>2 李四 32</p><p>3 王五 34 </p><p>4 赵六 28</p><p></p><p>用鼠标在CAD中框中一些文字后,执行程序,就可以与excel表中的相比较,当文字中包含“王五”,该文字就变为“王五” “34”(注意是在后面加一个字符串“34”,一共两个字符串) ,再接着找下一个被选中的文字重选与该表比较,找完为止。</p><p>以下是程序,编译通不过</p><p>---------------------------------------------------------------------</p><p>'比较CAD中选中的文字,如果与excel中指定列中某一单元格的文字相同,则在CAD中的该文字后加入excel该单元格同行不同列的另一单元格的文字<br/>Sub getdata()<br/>Dim sel As AcadSelectionSet<br/>Dim i As Integer<br/>Dim j As Integer<br/>Dim start1 As Variant<br/>Dim textObj As AcadText<br/>Dim rows As Integer<br/>Dim cols As Integer<br/>Dim textString As String<br/>Dim Height As Double</p><p>Height = 250<br/>On Error Resume Next</p><p>'选择对象<br/>Set sel = ThisDrawing.SelectionSets.Add("ssel")</p><p>If Err Then<br/> Err.Clear<br/> Set sel = ThisDrawing.SelectionSets.Item("ssel")<br/>End If</p><p>On Error GoTo 0<br/>sel.SelectOnScreen<br/>Dim Ent As AcadEntity</p><p>Dim xlApp As Excel.Application<br/>Set xlApp = GetObject(, "Excel.Application")</p><p>If Err Then<br/> MsgBox " Excel 应用程序没有运行。请启动 Excel 并重新运行程序。"<br/> Exit Sub<br/>End If</p><p>Dim xlSheet As Worksheet<br/>Set xlSheet = xlApp.ActiveSheet</p><p>Dim xlRange As Range<br/>Debug.Print xlSheet.UsedRange.Address</p><p>'比较所有选中的文字<br/>For Each Ent In sel<br/> If LCase(Ent.ObjectName) = "acdbtext" Then<br/> Set textObj = Ent<br/> <br/>'比较到相同的文字则保存下来<br/> j = 0<br/> For i = 1 To UsedRange.rows.Count<br/> If UsedRange.Offset(i, 1).Range("A1").Value = textObj.textString Then<br/> j = j + 1<br/> textString = textObj.textString = UsedRange.Offset(i, 2).Range("A1").Value<br/> End If<br/> <br/> i = i + 1<br/> Next<br/> <br/> If j <> 0 Then<br/> Height = textObj.Height<br/> start1 = textObj.InsertionPoint<br/> start1(0) = start1(0) + 10<br/> Set textObj = ThisDrawing.ModelSpace.AddText(textString, start1, Height)<br/> If j = 1 Then<br/> textObj.color = acBlue 'excel中文字只出现过一次,则文字为蓝色<br/> Else<br/> textObj.color = acRed 'excel中有复的文字,则文字改为红色<br/> End If<br/> newtextObj.Update<br/> End If<br/> <br/> End If<br/> <br/>Next</p><p>Set xlRange = Nothing<br/>Set xlSheet = Nothing<br/>Set xlApp = Nothing<br/>sel.Delete</p><p>End Sub</p><p> </p><p><br/> </p> <p>你的代码?</p> 代码加上去了,谢谢! 简单一点是,先把Excel表中的数据读出,变成一个二维数组。在ACAD中选择文本后,直接与二维数组比较。
页:
[1]