Skip to content Skip to sidebar Skip to footer

Cara Mengaktifkan MS Word di Excel dengan Macro VBA

Pada postingan Cara Membuka Aplikasi Office Lain dari Excel dengan Macro VBA, Anda mengenal cara kedua dalam melakukan verifikasi objek dan membuat perintah objek agar dapat dinyatakan berlaku.

Dalam contoh di postingan tersebut, kode macro yang dibuat untuk membuka dokumen Word yaitu namafile.docx, dimana dalam perintah yang sederhana saja seperti mengaktifkan dokumen Word, Anda harus memikirkan bagaimana jika file yang akan dibuka ternyata tidak ada di komputer, atau aplikasi dapat membuka namun file-nya tidak, atau aplikasi tidak membuka, dan/atau file sudah dibuka.

Anda mengaktifkan Word dengan asumsi Excel menerima informasi bahwa Anda harus meninggalkan Excel secara keseluruhan ke aplikasi Word atau aplikasi tujuan.

Terdapat satu fungsi VBA yang bisa diandalkan untuk menjalankan tugas semacam ini yaitu fungsi GetObject seperti yang ditulis pada contoh kode macro berikut:

Sub AktifkanWord()
Dim A As Object
Set A = GetObject(, "Word.Application")
A.Activate
End Sub

Fungsi GetObject memiliki dua argumen yang mana alamat sebagai argumen pertama dikosongkan karena bersifat opsional.

Lantas bagaimana jika aplikasi Word tidak membuka? Jika Anda coba menjalankan macro dalam keadaan aplikasi Word tidak membuka, maka VBA akan mengaktifkan objek yang tidak bisa diaktifkan sehingga akan memunculkan runtime error.

Dengan demikian, Anda harus membuat error bypass pada kode Anda untuk memberitahukan VBA agar mengaktifkan aplikasi Word saja jika Word membuka, dan memberitahu VBA agar membuka lalu mengaktifkan Word saja jika Word ditutup.

Caranya adalah dengan menggunakan statement On Error Resume Next yang memantau runtime error nomor 429, yang mana merupakan nomor error VBA yang muncul dari fungsi Getobject jika Word tidak membuka.

Dalam keadaan tersebut, VBA membuka contoh aplikasi Word baru seperti yang ditunjukkan kode macro AktifkanWord yang telah dimodifikasi berikut:

Sub AktifkanWord()
Dim A As Object
On Error Resume Next
Set A = GetObject(, "Word.Application")
If Err.Number = 429 Then
Err.Clear
Set A = CreateObject("Word.Application")
A.Visible = True
End If
A.Activate
End Sub

Jika Anda berencana ingin membuka file yang sudah ada, maka untuk membuat pemrograman yang baik, Anda perlu memperhitungkan kemungkinan jika file tersebut tidak ada pada alamat folder tertentu.

Anda mungkin mendapati file tersebut sudah terhapus, atau nama filenya telah diganti, atau telah dipindahkan ke folder yang lain. 

Sebagai contoh, anggap saja Anda memiliki file dengan nama namafile.docx dalam alamat folder C:\Alamat\File\Anda\. 

Sebelum Anda mencoba untuk membuka dokumen, periksa dahulu untuk memastikan direktori benar-benar ada pada alamat folder.

Jika file tidak ditemukan, tutup macro dengan kotak pesan yang memberitahukan pengguna mengapa proses dihentikan dan tidak selesai.

Berikut langkah-langkah modifikasi macro AktifkanWord:

1. Pada module VBE ketik lalu tekan Enter:

Sub AktifkanWord()

2. Tepat di bawahnya ketikkan contoh variabel objek untuk aplikasi dan dokumen Word:

Dim A As Object, B As Object

3. Ketik contoh variabel untuk alamat folder dan nama file-nya:

Dim C As String

4. Berikan statement On Error jika Word tidak membuka.

On Error Resume Next

5. Aktifkan Word jika sudah membuka:

Set A = GetObject(, "Word.Application")
If Err.Number = 429 Then
Err.Clear

6. Buat aplikasi Word jika tidak membuka:

Set A = CreateObject("Word.Application")
End If

7. Pastikan aplikasi Word tampil di layar dengan kode berikut:

A.Visible = True

8. Tetapkan alamat folder beserta nama file Word:

C = "C:\Alamat\File\Anda\namafile.docx"

9. Periksa direktori apakah nama file ditemukan dalam folder. Jika tidak ditemukan, beritahu pengguna dan tutup macro:

If Dir(C) = "" Then
MsgBox "File namafile.docx" & vbCrLf & _
"tidak ditemukan pada alamat folder" & vbCrLf & _
"C:\Alamat\File\Anda\.", _
vbExclamation, _
"Maaf, nama file tidak ditemukan."
Exit Sub
End If

10. Aktifkan aplikasi Word:

A.Activate

11. Perintahkan variabel objek untuk nama file dan alamat folder dokumen Word:

Set B = A.Documents(C)

12. Jika file tidak membuka maka perintahkan untuk tetap membuka dengan kode:

If B Is Nothing Then Set B = A.Documents.Open(C)

13. File membuka, maka aktifkan:

B.Activate

14. Lepaskan memori sistem untuk kedua variabel objek:

Set B = Nothing
Set A = Nothing

Kode lengkapnya adalah:

Sub AktifkanWord()
Dim A As Object, B As Object
Dim C As String
On Error Resume Next
Set A = GetObject(, "Word.Application")
If Err.Number = 429 Then
Err.Clear
Set A = CreateObject("Word.Application")
End If
A.Visible = True
C = "C:\Alamat\File\Anda\namafile.docx"
If Dir(C) = "" Then
MsgBox "File namafile.docx" & vbCrLf & _
"tidak ditemukan pada alamat folder" & vbCrLf & _
"C:\Alamat\File\Anda\.", _
vbExclamation, _
"Maaf, nama file tidak ditemukan."
Exit Sub
End If
A.Activate
Set B = A.Documents(C)
If B Is Nothing Then Set B = A.Documents.Open(C)
B.Activate
Set B = Nothing
Set A = Nothing
End Sub

Demikian cara mengaktifkan Word di Excel dengan menyusun kode Macro VBA, silakan Anda coba praktikkan dan semoga bermanfaat.