Excel 如何使用变量设置对象名称?

Excel 如何使用变量设置对象名称?,excel,vba,Excel,Vba,如何重命名对象 对象是嵌入的,oname变量在其他行中使用时有效,但.name命令无效。没有错误 公共子插入文件() 将新对象设置为对象 把我当作绳子 Dim CheckName作为字符串 CheckName=UserForm1.MultiPage2.SelectedItem.Caption oname=CheckName&“&”证据&“&”UserForm1.ProjectName.Value&“&”格式(日期,“ddmmmyyyy”) 工作表(“电子邮件”)。激活 范围(“A”&行数)。结束

如何重命名对象

对象是嵌入的,oname变量在其他行中使用时有效,但
.name
命令无效。没有错误

公共子插入文件()
将新对象设置为对象
把我当作绳子
Dim CheckName作为字符串
CheckName=UserForm1.MultiPage2.SelectedItem.Caption
oname=CheckName&“&”证据&“&”UserForm1.ProjectName.Value&“&”格式(日期,“ddmmmyyyy”)
工作表(“电子邮件”)。激活
范围(“A”&行数)。结束(xlUp)。偏移量(1)。选择
设置Rng=ActiveCell
Rng.RowHeight=70
出错时继续下一步
fpath=Application.GetOpenFilename(“所有文件,*.*”,标题:=“选择文件”)
如果LCase(fpath)=“false”,则退出Sub
如果UserForm1.ProjectName.Value为空,则
ActiveCell.Value=“”
ActiveSheet.OLEObjects.Add(文件名:=fpath_
链接:=假_
DisplayAsIcon:=真_
IconFileName:=“Outlook.msg”_
IconIndex:=1_
IconLabel:=extractFileName(fpath)).Name=OnName
ActiveCell.Offset(0,1).Value=oname
UserForm1.Attached1.Value=oname
ThisWorkbook.Worksheets(“输出”).Range(“B35”).Value=oname
调用UserForm1.Tickbox
UserForm1.LablePIA.Visible=True
UserForm1.Attached1.Visible=True
UserForm1.View.Visible=True
UserForm1.Deleteemail.Visible=True
MsgBox“附件已上载”
其他的
MsgBox“在上传电子邮件之前必须输入项目名称”
如果结束
端接头
公共函数extractFileName(文件路径)
对于i=Len(文件路径)到1步骤-1
如果Mid(filePath,i,1)=“\”则
extractFileName=Mid(文件路径,i+1,Len(文件路径)-i+1)
退出功能
如果结束
下一个
端函数
解决方案:
字符串变量包含的字符太多,显然最大值为35。

请这样尝试

Dim Obj As OLEObject

set Obj = ActiveSheet.OLEObjects.Add(Filename:=fpath, _
    Link:=False, _
    DisplayAsIcon:=True, _
    IconFileName:="Outlook.msg", _
    IconIndex:=1, _
   IconLabel:=extractFileName(fpath))

Obj.name = oname

OLEObject名称不能超过35个字符(可能除非您使用类模块等!)。

删除出错时的
,然后继续下一步
并运行代码。错误消息可能会告诉您问题所在:)谢谢Scott,错误消息是“无法设置OLEObject类的Name属性”。谢谢Thomas,我已经解决了问题,字符串变量包含太多字符,显然最大值是35!这是我生命中的两天,我再也回不来了!我知道它应该是有效的,但我不知道是什么出了问题!