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行是示例图标,您需要将其替换为相关图标。顺便问一下,你使用的是哪种操作系统?