以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  excel文件循环对象文本框识别  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187972)

--  作者:azlm100
--  发布时间:2023/8/24 13:24:00
--  excel文件循环对象文本框识别
打开一份excel文件,然后循环所有对象。再获取对象内的文本信息进行处理。
 For Each shp In sheet.Shapes
                Dim sin As Single
                Dim d As Date
                If Single.TryParse(shp.TextFrame.Characters.Text,sin) = False Then
                    If Date.TryParse(shp.TextFrame.Characters.Text,d) = False Then
                        Dim str As String = (shp.TextFrame.Characters.Text)
                        If  shp.TextFrame.Characters.Text <> "" Then
                            If str.Length > 1 Then
     end if
end if
            end if
end if
next

现在有一个问题就是循环对象的时候如果有一个对象是图片或者表格之类的,就会报错。
所以想在循环的时候识别是否为文本框对象。
查了excel的vb语言有这样一句
For Each shp In sheet.Shapes
If shp.ShapeType = msoTextbox Then
\' 处理文本框的代码
End If
Next shp

但是贴到foxtable里会提示未声明msoTextbox

想问下有什么语句可以在循环对象时候的识别出是否为文本框。

求助

--  作者:azlm100
--  发布时间:2023/8/24 15:34:00
--  
没事了,解决了。加了一个错误判断

 For Each shp In sheet.Shapes
                Dim sin As Single
                Dim d As Date
try
                If Single.TryParse(shp.TextFrame.Characters.Text,sin) = False Then
                    If Date.TryParse(shp.TextFrame.Characters.Text,d) = False Then
                        Dim str As String = (shp.TextFrame.Characters.Text)
                        If  shp.TextFrame.Characters.Text <> "" Then
                            If str.Length > 1 Then
     end if
end if
            end if
end if
next

--  作者:有点蓝
--  发布时间:2023/8/24 15:37:00
--  
If shp.Type = Microsoft.Office.Core.MsoShapeType.msoTextbox Then

https://learn.microsoft.com/zh-cn/previous-versions/office/developer/office-2010/ms251190(v=office.14)