在研发阶段,做硬件调试时,有很多元器件的参数可能不满足要求,需要更换参数,或者某些元器件的规格描述要改成和物料库里的一致,如果BOM改动很大,涉及的元器件有上百个时。这时如果要一个一个元器件去修改参数的话,那么工作量就非常大了,也容易改错或漏改,给研发工作带来巨大的麻烦。下面教大家一个一次性就能把参数改好的方法,非常方便快捷。
第一步,先打开已经修改好参数的BOM。
![638cbd97d9ec50eaf0dee6686a364777.png](https://i-blog.csdnimg.cn/blog_migrate/1204ab225343e45c252458fa5476f91b.jpeg)
第二步,全选原理图里的元器件,把属性里的参数统统删除。
![4cfaf676f90457b70597c4917e48c3fe.png](https://i-blog.csdnimg.cn/blog_migrate/b5c9dd1d1a8fb1d6fb017468f35262bf.jpeg)
![4b303a473e17ae074daa7354f121b474.png](https://i-blog.csdnimg.cn/blog_migrate/51262b362465232244d8edbc5dd8e6dc.jpeg)
第三步,打脚本编辑器,编写以下代码。
![7a030173089f8518b4545001bad38cc5.png](https://i-blog.csdnimg.cn/blog_migrate/64f9bcdab6b24df1736e4267aea03347.jpeg)
Sub Main
Dim xl As Object
Dim S_Components As String
Dim LastRow1 As Long
Set xl= GetObject(,"Excel.Application")
x1="D:DL020-MAIN-PCB-BOM V01_20200514.xlsx"
'CreateObject("Wscript.Shell").Run ("D:DL020-MAIN-PCB-BOM V01_20200514.xlsx")
'LastRow1 = xl.ActiveSheet.Range("A65536").End(xlUp).Row
'On Error Resume Next
'MsgBox LastRow1
For i= 4 To 200
If xl.ActiveSheet.cells(i,5)<>"" Then
S_Components =xl.ActiveSheet.cells(i,5)
On Error Resume Next
ActiveDocument.SelectObjects(plogObjectTypeAll, "", False)
S_Components = Replace$(S_Components, Chr$(9), " ")
ActiveDocument.SelectObjects(plogObjectTypeComponent, S_Components, True)
Set parts = ActiveDocument.GetObjects(plogObjectTypeComponent,"",True)
'MsgBox AttrVal(parts(1), "Description")
Dim attrs As Attributes
Dim a As String
For Each part In parts
Set attrs = part.Attributes
a=xl.ActiveSheet.cells(i,4)
On Error Resume Next
attrs("Description") =a
Next part
End If
Next i
End Sub
第四步,运行代码后,几秒钟的时间,整个BOM里的元器件的参数在原理图里一一对应地被更新了,非常高效。
![c2300794b176bd7c98c44b777ea30a29.png](https://i-blog.csdnimg.cn/blog_migrate/ba2910849077babe450a998818182e83.jpeg)