coretan tentang autocad dan excel

March 15, 2014

[XLS-PMG-08]: Update Hari Libur di Microsot Project dengan VBA Excel

Filed under: Excel, Project Management — cadex @ 14:47
Referensi :
Platform : Microsoft Excel dan Microsoft Project
Lokasi File :  download

Salah satu setting yang perlu diperhatikan dalam penggunaan Microsoft Project (MSProject) adalah memasukkan Hari Libur Nasional ke dalam kalender. Apabila proyek yang akan dilaksanakan telah disepakati atau diusulkan bahwa di hari Libur Nasional adalah bukan hari kerja, maka tanggal-tanggal hari libur tersebut harus dimasukkan dalam list exceptions di calendar yang akan dipakai.

Contoh Kalender (Calendar) yang belum dimasukkan daftar hari libur adalah:

Daftar hari libur bisa dimasukkan secara manual di tab Exceptions dengan memasukkan nama hari libur diikuti dengan tanggal awal libur dan akhir libur.

Apabila list hari libur tersimpan dalam Microsoft excel seperi di bawah:

Maka dengan bantuan Visual Basic Application for Excel (VBA Excel), proses update calendar di MSProject bisa dilakukan secara otomatis.

Berikut adalah code VBA Excel yang dimaksud:

Sub UpdateHariLiburNasional()

‘Code berikut berfungsi untuk menambahkan hari libur nasional di microsoft project (MSProject).

‘Pada visual basic editor direferensikan ke Microsoft Project Library agar dapat mengakses object di ‘Microsoft Project.

‘karena saya menggunakan microsoft project 2010, maka nama referensinya : Microsoft Project 14.0 ‘Object Library

‘untuk MSProject versi yang lain, nama referensi hanya berbeda pada angka di belakang tulisan ‘”Microsoft Project XX.X”

‘Alokasi memory untuk object aplikasi MSProject dan Project yang aktif

Dim msApp As MSProject.Application, msPro As Project

‘akan muncul pesan error jika program MSProject belum dijalankan

On Error Resume Next

‘set ke object aplikasi MSProject

Set msApp = GetObject(, “MSProject.Application”)

If Err.Number Then

Err.Clear

MsgBox ” Program Microsoft Projet Belum diaktifkan”

Exit Sub

End If

‘set ke object projek yang aktif

Set msPro = msApp.ActiveProject

‘alokasi memory untuk object kalender

Dim zCal As Calendar, nmCalendar As String

‘set ke object kalender

‘nama kalender yang akan diisi hari libur pada contoh kali ini adalah “Standard”

‘jika nama kalender tidak ditemukan, maka keluar prosedur

nmCalendar = “Standard”

On Error Resume Next

Set zCal = msPro.BaseCalendars(nmCalendar)

If Err.Number Then

Err.Clear ‘bersihkan error

MsgBox “Kalender ” & nmCalendar & ” tidak ada”, vbCritical

GoTo BersihkanAplikasiMSProject

Exit Sub ‘keluar prosedur

End If

‘membaca list tanggal pada Microsoft Excel di sheet yang aktif

‘informasi tangal ada di kolom A, sedangkan informasi keterangan ada di kolom B

‘data dibaca dimulai dari baris ke-dua

Dim rgTanggal As Range, rg As Range

‘set range tanggal di aktif sheet

Set rgTanggal = Range(Range(“a2”), Range(“a2”).End(xlDown))

‘membaca tanggal dan keterangan hari libur

For Each rg In rgTanggal

‘menambahkan exception di object calender

zCal.Exceptions.Add _

Type:=pjDaily, _

Start:=rg.Value, _

Finish:=rg.Value, _

Name:=rg.Offset(, 1).Value

Next rg

BersihkanAplikasiMSProject:

Set msApp = Nothing

End Sub

Seperti telah tercatat di code VBA Excel di atas, syarat-syarat sebelum menjalan VBAExcel di atas adalah:

  1. VBA sudah direferensikan ke object MSProject Library
  2. Program Microsoft Project dan Microsft Excel harus dibuka bersamaan.
  3. Nama Calender yang dipilih harus sudah ada di MSProject yang aktif.

Contoh calendar yang telah diupdate:

Selamat mencoba..

Leave a Comment »

No comments yet.

RSS feed for comments on this post.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: