Krishna 发表于 2022-7-6 10:31:09

将Autocad文本复制到Excel usi

你好
 
这是奎师那。。。。有谁能帮助我如何使用VBA将Autocad文本复制到Excel

fixo 发表于 2022-7-6 10:41:51

 
此文件将被复制到现有的Excel文件中
 

Option Explicit
' Requires:
' Microsoft Excel Object Library
' go to Tools->Options->General Tab and check 'Break on Unhandled Errors'

Const xlFileName As String = "C:\TestFile.xls" '<--change existing file name here

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Public Sub ExportText()

Dim oSset As AcadSelectionSet
Dim oEnt As AcadEntity
Dim oText As AcadText
Dim i As Long

Dim ftype(0) As Integer
Dim fdata(0) As Variant
ftype(0) = 0: fdata(0) = "TEXT"

Dim dxftype As Variant
Dim dxfdata As Variant

dxftype = ftype
dxfdata = fdata
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Dim xlApp As Object
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Dim lngRow As Long, lngCol As Long
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err <> 0 Then
Err.Clear
Set xlApp = CreateObject("Excel.Application")
If Err <> 0 Then
MsgBox "Impossible to run Excel.", vbExclamation
End
End If
End If
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
On Error GoTo Err_Control

         With ThisDrawing.SelectionSets
            While .Count > 0
                   .Item(0).Delete
            Wend
         Set oSset = .Add("$Texts$")
         End With
oSset.SelectOnScreen dxftype, dxfdata
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(xlFileName)
Set xlSheet = xlBook.Sheets(1)
xlApp.ScreenUpdating = False
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
lngRow = 1: lngCol = 1
For Each oEnt In oSset
Set oText = oEnt
xlSheet.Cells(lngRow, lngCol).Value = oText.TextString
lngRow = lngRow + 1
Next oEnt
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
xlSheet.Columns.HorizontalAlignment = xlHAlignLeft
xlSheet.Columns.AutoFit

xlApp.ScreenUpdating = True

xlBook.Save
xlBook.Close
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
xlApp.Application.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
MsgBox "Done"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Err_Control:
If Err.Number <> 0 Then
MsgBox Err.Description
End If

End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'

 
~'J'~

Krishna 发表于 2022-7-6 10:49:29

谢谢你的密码

vipulgos 发表于 2022-7-6 10:51:32

尊敬的各位:,
很抱歉从根级别开始。您提到的代码是在ACAD 2004的“工具”>“宏”>“宏”中复制的。但它仅限于“作为工作簿的手册”
错误信息如下:
编译错误:
未定义用户定义的类型
出了什么问题。
 
您提到的宏是否要复制到excel vba中?
我也试过了,同样的结果
我检查了Microsoft excel库。在excel中

fixo 发表于 2022-7-6 11:03:05

这是一个拼写错误
 
改用这些行
 
Dim xlApp作为对象
将xlBook作为对象
将xlSheet作为对象
 
~'J'~

vipulgos 发表于 2022-7-6 11:06:40

现在它停止在xlSheet。柱。水平对齐=xlHAlignLeft
我还尝试了xlSheet。柱。水平对齐=xlLeft
接下来,我尝试将这条线作为一个整体删除。它成功了。
运行如下:
命令:\u vbarun
选择对象:指定对角点:137
过滤出137个。在那之后,这条消息似乎已经完成了。
但在测试文件中找不到任何内容。我这边出了什么问题?

vipulgos 发表于 2022-7-6 11:14:14

我意识到,实际上它只知道dtext命令

fixo 发表于 2022-7-6 11:18:36

 
更改数值上的所有Excel常量
1、打开任何Excel文件
2.Alt+F11进入VBA编辑器
3、打开即时窗口
4.输入您需要的excel常数并提问
在前面标记
即。:
 
?xl左
 
然后按Enter键
 
-4131
 
对于您使用的所有xl常量,方法相同
 
HTH公司
 
~'J'~

jmitch77 发表于 2022-7-6 11:28:38

有没有办法只获取多行文本的文本?我得到了文本中的所有代码。例如文本。文本文本\P更多文本。更多文本。此外,如果文本带有下划线等,则包含代码%%U。是否可以通过某种方式删除这些代码?
谢谢
杰米奇

fixo 发表于 2022-7-6 11:31:47

 
以压缩格式将示例图形上传到此处(A2008或更早版本)
我不太清楚你在说格式化的多行文字
 
~'J'~
页: [1]
查看完整版本: 将Autocad文本复制到Excel usi