你好,请问以下这段代码为什么只有.prt的零件图才能生成PDF,.asm和.drw不能生成PDF,求指正,谢谢!
Sub OutputPDF() '转换PDF
Set swApp = CreateObject("SldWorks.Application") '启动SW
swApp.Visible = True '让SW显示出來
LoadExternalReferences = swApp.GetUserPreferenceIntegerValue(82) '记录开启打开文档的选项
swApp.SetUserPreferenceIntegerValue 82, 2 '设定为不开启打开文档
SavedFilesCount = 0
HeaderRow = 2
RowNumber = 2
RowNumber = HeaderRow + 1
PathName = Cells(RowNumber, 1) '读取第一个路径的值
While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到读完路径栏
Filename = Cells(RowNumber, 2)
If UCase(Right(Filename, 3)) = "PRT" Then swFileTYpe = 1
If UCase(Right(Filename, 3)) = "ASM" Then swFileTYpe = 2
If UCase(Right(Filename, 3)) = "DRW" Then swFileTYpe = 3
Set swDoc = Nothing
If Dir(PathName & Filename) <> "" Then
Set swDoc = swApp.OpenDoc(PathName & Filename, swFileTYpe) '开启文档
End If
If Not swDoc Is Nothing Then
ColumnNumber = 4
PropName = Cells(HeaderRow, ColumnNumber)
While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到读完表头
ConfigName = Cells(RowNumber, 3)
ColumnNumber = ColumnNumber + 1 '下一栏
PropName = Cells(HeaderRow, ColumnNumber)
Wend '回到>直到读完表头
Dim lErrors As Long
Dim lWarnings As Long
MyPathName = Cells(1, 3) '读取储存表格C1作为输出位置
If (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) Then MyPathName = PathName '如果C1没有内容则用源文件的位置
If Right(MyPathName, 1) <> "\" Then MyPathName = MyPathName & "\" '检查字符串最后的字符是否“/”
Select Case swFileTYpe
Case 1
MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(3D).pdf"
Case 2
MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(3D-Assembly).pdf"
Case 3
MyFileName = Left(Filename, InStrRev(Filename, ".") - 1) & "_" & ConfigName & "(2D-Drawing).pdf"
End Select
Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.ExportAs3D = True
SaveOk = swDoc.Extension.SaveAs(MyPathName & MyFileName, 0, 0, swExportPDFData, lErrors, lWarnings)
swApp.CloseDoc PathName & Filename '关闭
If SaveOk Then
Cells(RowNumber, 1).Interior.Color = RGB(190, 255, 187)
SavedFilesCount = SavedFilesCount + 1
End If
End If
RowNumber = RowNumber + 1 '下一列
PathName = Cells(RowNumber, 1)
Wend '回到>直到读完路径栏
MsgBox "转换了 " & SavedFilesCount & " 个文档!"
swApp.SetUserPreferenceIntegerValue 82, LoadExternalReferences '还原已记录的开启打开文档的选项
End Sub
|