SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 1158|回复: 4
打印 上一主题 下一主题

求将明细表另存为excel的api函数

[复制链接]

9

主题

39

帖子

69

金币

天使

Rank: 2Rank: 2

积分
181
QQ
跳转到指定楼层
楼主
发表于 2018-11-1 15:52:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求将工程图的明细表另存为excel格式的api函数,或将明细表指定单元格数据读出写入excel也行,拜托了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

2

主题

32

帖子

16

金币

天使

Rank: 2Rank: 2

积分
64
QQ
推荐
发表于 2018-12-7 14:40:51 | 只看该作者
看看这一段程序

    '----------------------------????BOM?????--------------------------

    Private Function TableToExcel(ByVal part As ModelDoc2, _
                                  ByVal inExcelName As String) As Boolean

        Dim exCOUNT      As Integer
        Dim swBomFeat    As SldWorks.BomFeature
        Dim vTableArr    As Variant
        Dim vTable       As Variant
        Dim swTable      As Variant
        Dim swFeat       As SldWorks.feature
        Dim swWeldmentCutListFeat   As SldWorks.WeldmentCutListFeature
        Dim vWeldCutListAnnotations As Variant
        Dim WeldForI     As Integer
        Dim WeldForJ     As Integer
        Dim a1           As Integer
        Dim a2           As Integer
        Dim s            As String
        Dim s1           As String
        Dim s2           As String
        Dim f1           As Single
        Dim f2           As Single
        Dim ExcelName    As String
        Dim textName     As String
        Dim oRes         As New ADODB.Recordset
        Dim oConn        As New ADODB.Connection
        Dim myTable()    As String
        Dim bTableIn     As Boolean  '??????д??
        Dim c1           As String   '????????
        Dim SQLstr       As String   '??????SQL????
       
       
        On Error GoTo ToExcelErr
        bTableIn = False
        ExcelName = inExcelName + ".xls"
        Set swFeat = part.FirstFeature
        Do While Not swFeat Is Nothing
            If swFeat.GetTypeName = "BomFeat" Then
             '--------------- ????????????----------
                Set swBomFeat = swFeat.GetSpecificFeature2
                vTableArr = swBomFeat.GetTableAnnotations
                For Each vTable In vTableArr
                    Set swTable = vTable
                    exCOUNT = swTable.RowCount - 2
                    bTableIn = True
                    ReDim myTable(0 To exCOUNT, 0 To 8) As String  '????????
                    For a1 = 0 To exCOUNT
                        For a2 = 0 To swTable.ColumnCount
                            If IsNull(swTable.text(a1, a2)) Then
                                s = " "
                            Else
                                s = swTable.text(a1, a2)
                                'If Len(s) = 0 Then s = " "
                            End If
                            myTable(a1, a2) = s
                        Next a2
                    Next a1
                Next vTable
            End If
                
            If swFeat.GetTypeName = "WeldmentTableFeat" Then
                 '-----------------?????и?????????-----------
                Set swWeldmentCutListFeat = swFeat.GetSpecificFeature2
                vWeldCutListAnnotations = swWeldmentCutListFeat.GetTableAnnotations
                WeldForJ = vWeldCutListAnnotations(0).ColumnCount - 1
                exCOUNT = vWeldCutListAnnotations(0).RowCount - 2
                bTableIn = True
                ReDim myTable(0 To exCOUNT, 0 To 8) As String
                For a1 = 0 To exCOUNT
                    For a2 = 0 To WeldForJ
                        If IsNull(vWeldCutListAnnotations(0).text(a1, a2)) Then
                            s = " "
                        Else
                            s = vWeldCutListAnnotations(0).text(a1, a2)
                            'If Len(s) = 0 Then s = " "
                        End If
                        myTable(a1, a2) = s
                    Next a2
                Next a1
          
                '????????????????????????????????(?????????????)???,???????????????????
                For a1 = 0 To exCOUNT
                    s = myTable(a1, 6)
                    s1 = myTable(a1, 7)
                    If Len(Trim(s)) > 0 Then
                        If Len(Trim(s1)) = 0 Then
                            myTable(a1, 7) = "L=" & s
                        Else
                            myTable(a1, 4) = myTable(a1, 5) + "  L=" + s
                        End If
                    End If
                Next a1
                
            End If
            Set swFeat = swFeat.GetNextFeature
        Loop
       
        If bTableIn Then  '??????????????????????excel???
            For a1 = 0 To exCOUNT          '????????[3] X [5]?????
                s = myTable(a1, 3)
                s1 = myTable(a1, 5)
                If Len(Trim(s)) > 0 Then
                    f1 = CSng(s)
                Else
                    f1 = 0
                End If
                If Len(Trim(s1)) > 0 Then
                   f2 = CSng(s1)
                Else
                   f2 = 0
                End If
                myTable(a1, 6) = Format(f1 * f2, "##0.00")
            Next a1
            DeleteFile ExcelName      '??????·???е?????????????
            oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ExcelName & ";Extended Properties=""Excel 8.0;"""
            oRes.Open "CREATE TABLE a (IndexID TEXT,PCPNO TEXT,PCPName TEXT,Amount TEXT,MaterialName TEXT,Weight TEXT,Tweight TEXT,Remark TEXT,Source TEXT)", oConn, adOpenStatic
       
            For a1 = exCOUNT To 0 Step -1
                s = "IndexID,PCPNO,PCPName,Amount,MaterialName,Weight,Tweight,Remark"
                s2 = ""
                c1 = """"
                For a2 = 0 To 7
                    myTable(a1, a2) = c1 & myTable(a1, a2) & c1
                    s2 = s2 & myTable(a1, a2) & ","             '???????????????
                Next a2
                s2 = Left(s2, Len(s2) - 1)
                SQLstr = "INSERT INTO a (" & s & ") VALUES (" & s2 & ")"
                oRes.Open SQLstr, oConn, adOpenStatic
            Next a1
            oConn.Close
        End If
       
          
        TableToExcel = True
        Exit Function
    ToExcelErr:
        TableToExcel = False

    End Function

复制代码
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 1 反对 0

使用道具 举报

5

主题

24

帖子

35

金币

天使

Rank: 2Rank: 2

积分
108
QQ
板凳
发表于 2018-11-2 12:08:44 | 只看该作者
不是可以直接保存成excel吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

30

帖子

50

金币

天使

Rank: 2Rank: 2

积分
130
QQ
地板
发表于 2018-12-3 00:04:46 | 只看该作者
是呀,不过我是在做关于这个的二次开发插件,所以想通过代码自动实现这个过程。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

13

帖子

16

金币

天使

Rank: 2Rank: 2

积分
57

最佳新人

5#
发表于 2020-8-8 19:04:36 | 只看该作者

   经典案例图书
wwjwwjwwj 发表于 2018-12-7 14:40
看看这一段程序

'----------------------------????BOM?????--------------------------

强大,感谢分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-15 21:45 , Processed in 0.147441 second(s), 35 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表