vba自动填充图形寄存器
你好希望你能帮我提些建议。
我想创建一个vba工具,允许我从图形中获取一些值,并将这些值传输到excel工作表。
基本上我有一个图纸接收登记表,我必须填写。有时一份工作上没有多少图纸,大多数时候我有包层、建筑师、钢铁厂等,我被告知我必须跟踪我收到的图纸。
然而,我想说的是,我这样做是通过将它们保存在计算机上,并将它们归档以便快速方便地访问,并将所有被取代的图形转移到适当的文件夹中,只留下标记为当前的当前图形。
我觉得这很容易,但我们的负责人坚持我们这样做,我知道这是正确的做法,但我们根本没有时间记录我们在仍在执行时收到的图纸数量,而且这不仅仅是图纸,所有其他的东西,当你推动工作完成并达到目标,最重要的是把事情做好时,似乎并不重要。
正如我所说,我可以通过电脑完全控制绘图,但其他人没有,但在我在那里工作的两年里,我只有一次被管理层要求查看我无法制作的图纸接收登记簿。这确实让我看起来很糟糕,但似乎付出了很多努力却收效甚微?说了这么多,我想保留一张收到的图纸。
因此,如果有人能提出一个更简单的方法来做这件事,将非常感谢一些指导。
我对vba工具的看法如下。
1、允许用户选择四个acad实体。这将是项目名称、图纸编号、图纸标题,然后是版本。实体可以是多行文字、文字或属性。取决于其他人创建图形的方式。
2.然后保存四个实体的值并命名它们,例如txtstr1、txtstr2、txtstr3和txtstr4
3.然后打开我的dwg接收寄存器,选择一个特定单元格,基本上告诉excel范围(“a1”)是txtstr1,范围(“a2”)是txtstr2等,然后使活动单元格下一个单元格向下,然后转到下一个图形?
我对vba不太在行,但从我学到的东西来看,这似乎相当直接,我认为我可以从我创建的其他vba工具中提取一些代码。
那么,请问这是不是太复杂了?有没有更简单的方法。我一直想为我的图纸设置一些东西,因为目前我在填写我们的图纸注册表时手动键入它们。我们公司不使用床单套件。我可以看到它们的好处,但我们不会产生大量的图纸,所以如果我能为此创建一个vba工具,我会非常高兴,我总是正确地进行页面设置,并使用publish快速打印图纸。
干杯
Col公司 如果所有必需的元素都是标题栏中的属性,那么只需单击一个按钮即可实现-如果文件名包含任何必需的信息,也可以从文件名中提取信息。
我可以最容易导出到csv文件(只是excel文件的一种格式),因为这些文件最容易写入-如果您愿意,可以将其保存为xls。。。csv文件可以保存在某个位置,并在每次打开收到的图形时写入。。。。。然后,也许你可以将信息复制粘贴到你的主图纸登记册中,以供发布。
只是一些想法。。。 如果你真的想接受上面的建议,我非常乐意写一个LISP来适应这一点。
但我需要关于要写入的数据位置的某些信息。一、 e.Is存储在属性中,如果是,块名和属性名是什么。。等等(上传块的样本可能更容易)。
很乐意帮忙
李 只需创建一个简单的excel模板,并将其复制到每个项目文件夹中。填写简单。
是的,填写起来很简单,但也很耗时——这就是LISP、VBA和大多数其他编程语言的要点,以节省用户时间。
难道你不想打开一张图,点击一个按钮,因为所有需要的信息都写得很准确;与每次都必须打开excel表格并手动输入现在存在人为错误空间的数据不同?
只是一个想法,
李 嗨,李,
谢谢你的提议,非常感谢。
我知道一点vba,所以我想坚持下去,再加上这是我练习的唯一机会。
你的建议的方法我喜欢,这将是伟大的,但问题的图纸来自不同的公司,所以图纸从来没有相同的。大多数情况下,标题栏不是块,而是线条、文字或多行文字。这就是为什么我在思考或使用一个选择集,然后存储值,然后在第二个屏幕上打开excel,只需将鼠标移到excel并点击excel中的按钮。
我甚至不确定它是否像那样复杂。我知道你可以在不同的程序之间工作,所以我实际上可以在acad中完成这一切。只需选择4个acad实体,将其保存为文本字符串,然后自动传输到excel中的活动单元格,然后使下一个单元格处于活动状态并粘贴值。为了加快这个过程,我可以让acad移动到下一个打开的图形,然后允许我进行新的选择。我在excel和word之间做了一些工作,传输了信息,所以用acad一定可以。从来没有遇到过更改图纸的代码tho?必须寻求帮助。
关于我自己的dwg reg,这是在一个带有属性的适当标题栏中。所以现在我正在输入绘图reg,但我希望创建一个vba程序,用于提取属性值并将其放入适当的excel单元格中。
谢谢你的建议,李。
干杯
Col公司 没问题,上校,我只是想谈谈我将如何继续下去。
如果你想继续学习VBA,这里有相当多的人能够胜任这门语言——然而,我对它几乎一无所知。
如果你还有什么问题我可以帮你,尽管问
李 下面是一个非常基本的代码段,用于将文本作为文本、多行文字或属性引用。仍需要传输到Excel的代码。
Sub GetTextData()
Dim varPckPt As Variant
Dim obj As AcadObject
Dim varMatrix As Variant
Dim lngContext As Long
Dim strObjName As String
Dim strText As String
On Error GoTo MissedPick
ThisDrawing.Utility.GetSubEntity obj, varPckPt, varMatrix, lngContext, "Select some text: "
On Error GoTo 0
strObjName = obj.ObjectName
Select Case strObjName
Case "AcDbMText"
Dim entMText As AcadMText
Set entMText = obj
strText = entMText.TextString
Case "AcDbText"
Dim entText As AcadText
Set entText = obj
strText = entText.TextString
Case "AcDbAttribute"
Dim entAtt As AcadAttributeReference
Set entAtt = obj
strText = entAtt.TextString
Case Else
strText = "No text selected!"
End Select
MsgBox strText
Exit Sub
MissedPick:
MsgBox "Missed Pick!"
End Sub 如果我理解正确,进来的图纸根本不符合相同的标准,那么,如何判断选择集中的哪些实体是图纸编号、项目编号、版本等。。。每次都要提示。。。这很可能会导致错误。 我无法想象自动逻辑如何处理来自多个来源的图形。我的示例所做的唯一一点是允许选择各种实体类型,这些实体类型可能包含与图形注册表相关的文本。
代码将受益于可预测的序列和描述性提示,以帮助传输工作,但我不确定这种类型的过程是否能够避免操作员错误。
页:
[1]
2