excel - 如何使用变量设置 OLEObject 名称?

标签 excel vba

如何重命名 OLEObject?
该对象是嵌入的,并且在其他行中使用时,oname 变量有效,但 .name命令将不起作用。没有错误。

Public Sub insertFiles()
Dim newObject As Object
Dim oname As String
Dim CheckName As String
 
CheckName = UserForm1.MultiPage2.SelectedItem.Caption
oname = CheckName & "_" & "Evidence" & "_" & UserForm1.ProjectName.Value & "_" & Format(Date, "ddmmmyyyy")

Worksheets("Emails").Activate
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Set Rng = ActiveCell
Rng.RowHeight = 70

On Error Resume Next

fpath = Application.GetOpenFilename("All Files,*.*", Title:="Select file")
If LCase(fpath) = "false" Then Exit Sub
    
If UserForm1.ProjectName.Value <> Empty Then
       
    ActiveCell.Value = "."

    ActiveSheet.OLEObjects.Add(Filename:=fpath, _
      Link:=False, _
      DisplayAsIcon:=True, _
      IconFileName:="Outlook.msg", _
      IconIndex:=1, _
      IconLabel:=extractFileName(fpath)).Name = oname
    
    ActiveCell.Offset(0, 1).Value = oname
    UserForm1.Attached1.Value = oname
    ThisWorkbook.Worksheets("Output").Range("B35").Value = oname

    Call UserForm1.Tickbox

    UserForm1.LablePIA.Visible = True
    UserForm1.Attached1.Visible = True
    UserForm1.View.Visible = True
    UserForm1.Deleteemail.Visible = True

    MsgBox "Attachment uploaded"
  
Else
    MsgBox "Project Name must be input before emails can be uploaded"
End If

End Sub

Public Function extractFileName(filePath)
    For i = Len(filePath) To 1 Step -1
        If Mid(filePath, i, 1) = "\" Then
        extractFileName = Mid(filePath, i + 1, Len(filePath) - i + 1)
        Exit Function
        End If
    Next

End Function
解决方案:
字符串变量包含太多字符,显然最大值为 35。

最佳答案

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

关于excel - 如何使用变量设置 OLEObject 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63428680/

相关文章:

sql - SSIS 隐藏工作表作为 Excel 目标

excel - 尝试更新现有文本框,但收到 "Object Required"错误

vba - Excel-VBA .Range ("NamedRange").Row 返回不同的行然后范围所在的位置

python - 如何在 xlsxwriter 中对整列使用色阶

vba - 通过 SMTP 发送邮件时,我收到 "Transport Failed to Connect to server"

excel - 循环遍历列表以为列表中的每个客户创建一个 CSV

vba - 如何借助 VBA 中初始化对象的属性来初始化对象

vba - 使用 Excel 2016 将范围保存为图片

excel - 为什么此 VBA 代码中的执行未移至错误处理部分

excel - 将代码放入用户表单而不是模块中是否有缺点?