iCAx开思网

标题: 通过SW宏启动EXCEL,并打开指定 .xls文件 [打印本页]

作者: MALAI    时间: 2018-6-5 16:13
标题: 通过SW宏启动EXCEL,并打开指定 .xls文件
本帖最后由 MALAI 于 2018-6-5 16:19 编辑

以下代码是从论坛里找到的参考,希望各位大神能帮忙完成


Sub mn()
Set exApp = CreateObject("Excel.Application")
exApp.Visible = True


'Set exWorkbook = exApp.Workbooks.Add
'Set exWorkSheet = exWorkbook.ActiveSheet


Set exWorkbook = exApp.OpenWorkbook("D:\123.xls")‘  这个句子是错误的,应该怎么改

End Sub



作者: qiminger    时间: 2018-6-6 09:42
调用系统函数
  1. Sub main()

  2.     Shell "explorer.exe " & "D:\123.xls", vbNormalFocus
  3.    
  4. End Sub
复制代码

作者: MALAI    时间: 2018-6-6 12:06
qiminger 发表于 2018-6-6 09:42
调用系统函数

工程图中,有一个表,想通过VBA 将表格另存为EXCEL 的 .xls格式;
文件名= 当前文件名.XLS;
保存位置=当前工程图所在文件夹;打开对应的.XLS 文件;
说明:表格有可能是 孔表,也有可能是材料明细表,

以下代码是在论坛中找到的,
手动选中表格,执行宏,在相同的文件夹中另存成为TXT文件  (如果能把手动选中表格忽略那更好)
如果要改成  XLS
对应代码应该怎么改


      我 怀疑是 改这个  SaveAText,
value = swTableAnnotation.SaveAsText(FileName, Separator)   '表格另存为TXT文件










' ****************
' BOM TO TEXT
' ****************
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim swSelMgr     As SldWorks.SelectionMgr
Dim swTableAnnotation       As SldWorks.TableAnnotation

Dim FileName As String
Dim Separator As String
Dim value As Boolean

Sub main()

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc '
If Part Is Nothing Then Exit Sub

PathName = Part.GetPathName     '读取当前SW文档名(含路径)
FileName = Left(PathName, Len(PathName) - 7) + ".txt"     '提取当前SW文件名加后缀名
Set swSelMgr = Part.SelectionManager   '设选择器
Debug.Print swSelMgr.GetSelectedObjectCount
Debug.Print swSelMgr.GetSelectedObjectType(1)

If (swSelMgr.GetSelectedObjectCount = 0 Or Not (swSelMgr.GetSelectedObjectType(1) = swSelANNOTATIONTABLES)) Then

  MsgBox "请在视图中选择BOM表格"

  Exit Sub

End If


Set swTableAnnotation = swSelMgr.GetSelectedObject6(1, -1)    '选择为表格

value = swTableAnnotation.SaveAsText(FileName, Separator)   '表格另存为TXT文件      我 怀疑是 改这个  SaveAText,

If value Then
  MsgBox "BOM表格已另存为" & FileName
'Part.ClearSelection
End If
End Sub

作者: makejon    时间: 2018-10-5 09:19
也是打不开
作者: 735057167    时间: 2020-5-12 19:07
exApp.workbooks.Open("D:\123.xls") 这样就可以了
作者: xiaocake    时间: 2020-5-17 11:21
本帖最后由 xiaocake 于 2020-5-17 15:41 编辑
MALAI 发表于 2018-6-6 12:06
工程图中,有一个表,想通过VBA 将表格另存为EXCEL 的 .xls格式;
文件名= 当前文件名.XLS;
保存位置=当 ...

SaveAsText 输出的是文本文档,
你可以设置 分隔符 Separator =","         然后另存文件名为 xxx.csv    (逗号分隔符文件)
         或者 分隔符 Separator =vbTab 或者空字符串("")   然后另存文件名为 xxx.xls
这两种格式的文件可以直接用excel打开,只不过打开后单元格没有边线,字体也是默认的。
你可以打开文件后再自己加上边框,设置字体什么的,再另存想要的Excel格式就实现目的了。

另外,其实输出这个bom表可以不通过工程图,直接遍历装配体就可以实现。








欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3