Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 不能';t了解如何通过";IconFileName“&引用;IconIndex“;OLEObjects.Add方法的参数_Excel_Vbscript_Vba - Fatal编程技术网

Excel 不能';t了解如何通过";IconFileName“&引用;IconIndex“;OLEObjects.Add方法的参数

Excel 不能';t了解如何通过";IconFileName“&引用;IconIndex“;OLEObjects.Add方法的参数,excel,vbscript,vba,Excel,Vbscript,Vba,我运行了一个宏,如下所示: Sub Macro1() ' ' Macro1 Macro ' ' Range("D7").Select ActiveSheet.OLEObjects.Add(Filename:= _ "C:\Documents and Settings\rakshiar\Desktop\\Operating+System+Concepts.pdf" _ , Link:=False, DisplayAsIcon:=True, Icon

我运行了一个宏,如下所示:

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("D7").Select
    ActiveSheet.OLEObjects.Add(Filename:= _
        "C:\Documents and Settings\rakshiar\Desktop\\Operating+System+Concepts.pdf" _
        , Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\WINDOWS\Installer\{AC76BA86-7AD7-FFFF-7B44-AB0000000001}\PDFFile_8.ico", _
        IconIndex:=0, IconLabel:="Operating+System+Concepts.pdf").Select

    End Sub
并尝试将其转换为VBScript代码,如下所示:

excel = WIN32OLE.new('Excel.Application')
excel.visible = true
wb=excel.workbooks.open("E:\\WIPData\\Ruby\\Scripts\\GSL_File_DownLoad.xlsx")
wbs= wb.Worksheets(1)
wbs.cells(rows,2).values = wbs.OLEObjects.Add(,full_path,False,True, IconFileName:= _
               "C:\WINDOWS\Installer\{AC76BA86-7AD7-FFFF-7B44-AB0000000001}\PDFFile_8.ico",_
               IconIndex:=0,"Operating+System+Concepts.pdf")
但是现在无法理解如何以及如何对
IconIndex
IconFileName
参数进行设置

我有.pdf、.tif、.docs、docx、.gif等扩展文件,需要使用脚本将这些文件附加到Excel列。那么在运行时,我如何获得.pdf文件的
“C:\WINDOWS\Installer\{AC76BA86-7AD7-FFFF-7B44-AB0000000001}\PDFFile_8.ico”


请在这里帮助我。

您可以使用如下变量
设置ol=ws.OLEObjects.Add(,FileToBeinserted,False,True,icoFile,icodex,lbl)
在执行上述语句之前,只需确定要插入的文件类型,然后设置相关图标文件的路径
icoFile

下面是一个示例(经过尝试和测试),它适用于选定的扩展。请酌情修改

'~~> Sample icons for relevant files
Const pdfIco = "D:\Temp\icons\ARROWS\AARROW.ico"
Const wrdIco = "D:\Temp\icons\ARROWS\ANYWHERE.ico"
Const TiffIco = "D:\Temp\icons\ARROWS\ARROW1.ico"
Const OtherFormat = "D:\Temp\icons\ARROWS\ARROW1A.ico"

Dim Xl, Wb, Ws, ol, FileToBeInserted, lbl

Set Xl = CreateObject("Excel.Application")
Xl.Visible = True

Set Wb = Xl.Workbooks.Add
Set Ws = Wb.Sheets(1)

'~~> Let user select a file
FileToBeInserted = Xl.GetOpenFilename("All Files (*.*), *.*")

'~~> Check if the user selected a file
If FileToBeInserted <> False Then
    '~~> Get the file name for the label
    lbl = GetFileName(FileToBeInserted)

    icoIndex = 0

    '~~> I am testing for just 3 extensions. Amend as applicable
    Select Case GetFileExtn(FileToBeInserted)
    Case "PDF"
        icoFile = pdfIco
    Case "DOCX", "DOC"
        icoFile = wrdIco
    Case "Tiff"
        icoFile = TiffIco
    Case Else
        icoFile = OtherFormat
    End Select

    '~~> Create the object
    Set ol = Ws.OLEObjects.Add(, FileToBeInserted, False, True, icoFile, icoIndex, lbl)
End If

'~~> Function to get the File extention
Function GetFileExtn(sFile)
    GetFileExtn = Trim(UCase(Right(sFile, Len(sFile) - InStrRev(sFile, "."))))
End Function

'~~> Function to get the file name
Function GetFileName(sFile)
    GetFileName = Left(sFile, (InStrRev(sFile, ".", -1, 1) - 1))
End Function
“~~>相关文件的示例图标
Const pdfIco=“D:\Temp\icons\ARROWS\AARROW.ico”
Const wrdIco=“D:\Temp\icons\ARROWS\ANYWHERE.ico”
Const TiffIco=“D:\Temp\icons\ARROWS\ARROW1.ico”
Const OtherFormat=“D:\Temp\icons\ARROWS\ARROW1A.ico”
尺寸Xl、Wb、Ws、ol、待插入文件、lbl
Set Xl=CreateObject(“Excel.Application”)
Xl.Visible=True
设置Wb=Xl.Workbooks.Add
设置Ws=Wb.Sheets(1)
“~~>让用户选择一个文件
FileToBeInserted=Xl.GetOpenFilename(“所有文件(*.*),*.*”)
“~~>检查用户是否选择了文件
如果FileToBeInserted为False,则
“~~>获取标签的文件名
lbl=GetFileName(FileToBeInserted)
指数=0
“~~>我只测试了3个扩展。根据适用情况进行修订
选择案例GetFileExtn(FileToBeInserted)
案例“PDF”
icoFile=pdfIco
案例“DOCX”、“DOC”
icoFile=wrdIco
案件“Tiff”
icoFile=TiffIco
其他情况
icoFile=OtherFormat
结束选择
“~~>创建对象
Set ol=Ws.OLEObjects.Add(,FileToBeInserted,False,True,icoFile,icodex,lbl)
如果结束
“~~>函数以获取文件扩展名
函数GetFileExtn(sFile)
GetFileExtn=Trim(UCase(右(sFile,Len(sFile)-InStrRev(sFile,“.”)))
端函数
“~~>函数以获取文件名
函数GetFileName(sFile)
GetFileName=Left(sFile,(InStrRev(sFile,“.”,-1,1)-1))
端函数

但是这样的用户
C:\WINDOWS\Installer\{AC76BA86-7AD7-FFFF-7B44-AB0000000001}\PDFFile\u 8.ico
我会得到什么?我不明白这些行
D:\Temp\icons\ARROWS\AARROW.ico
。请您进一步解释一下好吗?代码中的前4行是示例图标,您需要将其替换为相关图标。顺便问一下,你使用的是哪种操作系统?