OLE Object

OLE Object atau kepanjangan dari Object Linking and Embedding.

OLE adalah sebuah teknologi yang memungkinkan aplikasi untuk membuat dan menyisipkan objek dari satu aplikasi ke aplikasi lain.

Dalam konteks VBA, Ole Object sering digunakan untuk menyisipkan atau mengakses objek dari program lain di dalam program yang sedang berjalan.

Contohnya, kamu dapat menggunakan OLE Object dalam VBA Excel untuk menyisipkan objek dari program seperti Microsoft Word atau PowerPoint bahkan hingga file PDF ke dalam lembar kerja Excel.

Insert OLE Object

Misalnya, disini saya contohkan OLE Object untuk menyisipkan File PDF kedalam File Excel.

Maka scriptnya bisa dibuat seperti dibawah ini

Sub TambahPDF()
Dim OLEs As Excel.OLEObjects
Set OLEs = Sheet1.OLEObjects
Set ole = OLEs.Add( _
    Filename:="NamaLokasiFIle", _
    Link:=False, _
    DisplayAsIcon:=True, _
    IconFileName:= "NamaLokasiIcon", _
    Left:=Sheet1.Range("F1").Left, _
    Top:=Sheet1.Range("F1").Top + 5, _
    IconIndex:=0, _
    IconLabel:="Klik disini untuk Membuka file")
ole.Name = "andi"
End Sub

Pada script diatas, OLE Object ditambahkan ke alamat Cell F1 dengan NamaFIle dan Juga Icon FIle yang sudah ditentukan.

Jika ingin lebih dinamis, Lokasi File bisa ditambahkan melalui Open Dialog, sedangkan untuk Icon File Harus menggunakan Windows API jika ingin mengambil Icon dari File Terpilih.

Windows API untuk menambahkan icon sesuai dengan File yang ditambahkan.

Private Declare PtrSafe Function FindExecutable Lib "shell32.dll" _
                 Alias "FindExecutableA" (ByVal lpFile As String, _
                 ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Function exeApp(strFile As String) As String
       Const MAX_FILENAME_LEN = 260
       Dim i As Long, buff As String

       If strFile = "" Or Dir(strFile) = "" Then
          MsgBox "File not found!", vbCritical
          Exit Function
       End If
       'Create a buffer
       buff = String(MAX_FILENAME_LEN, 32)
       'Retrieve the name and handle of the executable
       i = FindExecutable(strFile, vbNullString, buff)
       If i > 32 Then
          exeApp = Left$(buff, InStr(buff, Chr$(0)) - 1)
       Else
          MsgBox "No association found, for this file !"
       End If
End Function

Sehingga pada Script OLE Objectnya menjadi

Sub TambahPDF()
Dim OLEs As Excel.OLEObjects
Set OLEs = Sheet1.OLEObjects

Set fileDialog = Application.FileDialog(msoFileDialogFilePicker)
  
    With fileDialog
        .Title = "Pilih File PDF"
        .Filters.Clear
        .Filters.Add "PDF Files", "*.pdf"
        .AllowMultiSelect = False 
        If .Show = -1 Then ' Jika pengguna memilih file
            NamaFile= .SelectedItems(1) 
        Else
            Exit Sub
        End If
    End With

Set ole = OLEs.Add( _
    Filename:= NamaFile, _
    Link:=False, _
    DisplayAsIcon:=True, _
    IconFileName:= exeApp(NamaFile), _
    Left:=Sheet1.Range("F1").Left, _
    Top:=Sheet1.Range("F1").Top + 5, _
    IconIndex:=0, _
    IconLabel:="Klik disini untuk Membuka file")
ole.Name = "NamaShapes"
End Sub

Membuka OLE Object

Untuk membuka File Ole Object yang ditambahkan bisa langsung dilakukan double klik pada Ole Object yang dimaksud.

Tetapi jika ingin membuka FIle Ole Object menggunakan perantara lain, misalnya sebuah Button, maka script pada button bisa dibuat seperti dibawah ini.

Sub BukaPDF()
Sheet1.Shapes("NamaShapes").Select
Selection.Verb Verb:=xlOpen
End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp