0

私は以下のようにマクロを実行しました:

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議論にどのように何を置くべきかを理解できませんでしたか?

スクリプトを使用してExcel列に添付する必要がある.pdf、.tif、.docs、docx、.gifなどの拡張ファイルがあります。"C:\WINDOWS\Installer\{AC76BA86-7AD7-FFFF-7B44-AB0000000001}\PDFFile_8.ico"では、実行時に.pdfファイルのような値を取得するにはどうすればよいですか?

同じようにここで私を助けてください。

4

1 に答える 1

1

このような変数を使用できますSet ol = ws.OLEObjects.Add(, FileToBeinserted, False, True, icoFile, icoIndex,lbl)。上記のステートメントを実行する前に、挿入するファイルの種類を特定し、関連するアイコンファイルへのパスを設定するだけです。icoFile

これは、選択した拡張機能で機能するサンプル(TRIED AND TESTED )です。必要に応じて修正してください

'~~> 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
于 2013-01-28T12:59:59.233 に答える