700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel

catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel

时间:2019-01-15 14:47:34

相关推荐

catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel

探讨如何基于CATIA VBA实现键导出Bom信息到Excel中的功能。此外,还将探讨Excel的宏使用技巧。导出Bom信息到Excel中_腾讯视频​

高清视频请访问如下链接查看:

01编程思路

首先设计一个如下图的Bom表,表中列出我们想要的Bom信息。Bom表每家企业都可能不一样,一般都是客制化的,根据需求来制作。

同样,Bom表的制作方法也有很多,本文介绍其中一种制作的思路。

代码按如下思路来写:如何获取产品的属性信息,如产品名称、产品编号、存储保存路径等等

如何获取所有需要的产品级别的属性信息,如导出一级部品、二级部品等

如何将获取到的产品属性信息写入Excel中

如何按照结构树的顺序将Bom信息导入Excel中

Excel的单元格的格式怎么修改

02如何设置Excel的颜色

颜色的设置方法有两种

一种通过索引:.Interior.ColorIndex = i

另一种用RGB值:.Interior.Color = RGB(255, 192, 0)

方法都是.Interior的颜色属性

03如何设置Excel的单元格式

>>>获取Excel的Application

Set xlApp = GetObject(, "Excel.Application")

If Err.Number <> 0 Then

Err.Clear

Set xlApp = CreateObject("EXCEL.Application")

Else

Err.Clear

MsgBox "Please note you have to close Excel", vbCritical

Exit Sub

End If

xlApp.Visible = True

>>>新建工作薄

Set oSheet = xlApp.Application.workbooks.Add

>>>设置工作表单元格格式

With xlApp

.cells.Clear‘清除所有内容

.cells.ClearFormats ‘清除所有格式

.cells.Font.Name = "Microsoft YaHei" ‘字体微软雅黑

.cells.Font.Size = 10‘字体大小

.cells.HorizontalAlignment = 2‘对齐方式

.Range(.cells(oRow, oColumn), .cells(oRow, oColumn + 7)).Font.Bold = True‘字体加粗

.Range(.cells(oRow, oColumn), .cells(oRow, oColumn + 7)).Font.Color = RGB(255, 0, 0)‘字体颜色

End With

>>>其他设置方法

>>>另外,再说几个技巧合并单元格

.ActiveSheet.Range(.cells(1, "B"), .cells(1, "I")).Merge

不显示网格线

.ActiveWindow.DisplayGridlines = False

设置过滤

.ActiveSheet.Range(.cells(12, "B"), .cells(12, "I")).AutoFilter

等等,我们都可以通过Excel的宏录制找到。

04获取Excel最后一个非空单元格

如果能够获取到Excel的最后一个非空单元格,那么,我们写入数据的时候,只要永远写在Excel非空单元格的下一行,那么就能实现数据依次全部写入Excel中了。Excel中的书写方法是这样的:

Dim LastRow As String

LastRow = xlApp.Range("B" & xlApp.Rows.Count).End(xlUp).Row + 1

LastRow = xlApp.Range("A65536").End(xlUp).Row + 1

LastRow = xlApp.Range("A" & xlApp.Rows.Count).End(xlUp).Row + 1

LastRow = xlApp.Range("A1").End(xlDown).Row + 1

然而在CATIA中,你会发现这样写是行不通的,一定会报错。查询了很多资料后,终于找到一篇帖子,给出了一个解决办法:

在使用xlDown和xlUp方法前要先申明常量值:

Const xlDown = -4121

Const xlUp = -4162

虽然我到现在也没搞明白这几个数值的含义,但是,这种方法是可以解决问题的。

附上找到的那篇帖子原文,供大家参考:

放大点看

05获取产品不同级别的属性信息

>>>使用For ... next循环获取

需要哪一级别在for next里套上下面这个循环就可以

需要注意的是要修改

Fork=1To oProductDoc.Product.Products.Item(i).Products.Item(j).Products.Count

oProductDoc.Product.Products.Item(i).Products.Item(j).Products.Item(k).PartNumber

这里的.Products.Item(j)得到的是Product,Product下就是Products,Products是Product的集合,可以用item(i)来获取其中的Product,就这样一层一层的绕下去。

如果不太确定的时候,我们可以加个Select方法直接在结构树中测试

CATIA.ActiveDocument.Selection.Clear

CATIA.ActiveDocument.Selection.Add CATIA.ActiveDocument.Product.Products.Item(1).Products.Item(1) ~balabala

06详细代码

>>>详细代码如下

07参考资料

教程来自慧舟软件

PLM应用工程师

伍松 提供

更多资讯,请关注慧舟软件CATIA及PLM专家

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。