Pernahkah Anda ingin menjalankan beberapa kode Akses pada jadwal otomatis?
Saya akan menunjukkan cara menggunakan aplikasi Access yang ada untuk berjalan dan keluar dengan anggun saat diluncurkan melalui Penjadwal Tugas sambil tetap menghadirkan antarmuka pengguna yang ramah saat diluncurkan oleh pengguna akhir.
Kunci untuk membuatnya bekerja adalah /cmd
bendera.
Meneruskan Argumen Baris Perintah ke Akses
Untuk meneruskan argumen baris perintah untuk mengakses, Anda menggunakan /cmd
argumen baris perintah saat meluncurkan aplikasi Anda:
Menentukan bahwa apa yang mengikuti pada baris perintah adalah nilai yang akan dikembalikan oleh Perintah fungsi. Opsi ini harus menjadi sakelar terakhir pada baris perintah. Anda dapat menggunakan titik koma (;) sebagai alternatif dari /cmd .
Gunakan sakelar ini untuk menentukan argumen baris perintah yang dapat digunakan dalam kode Visual Basic for Applications (VBA)
Untuk mengambil teks yang Anda teruskan pada baris perintah mengikuti /cmd
argumen, Anda menggunakan VBA.Command
fungsi.
Anda dapat menggunakan fungsi ini saat startup untuk mengarahkan ulang kode Anda untuk melakukan tugas berulang apa pun.
Contoh Praktis
- Buat database baru
- Tambahkan kode berikut ke modul standar baru:
Public Function Startup()
If Trim(VBA.Command) = "Nightly" Then
Shell "winver", vbNormalFocus
Application.Quit
End If
MsgBox "Start up"
End Function
- Buat makro baru
- Pilih "RunCode " dari tarik-turun "Tambahkan Tindakan Baru"
- Setel "Nama Fungsi" ke
Startup()
- Tutup dan simpan makro sebagai "AutoExec "
Jalankan Sebagai Pengguna Biasa
Untuk menguji aplikasi sebagai pengguna biasa, cukup padatkan dan perbaiki database.
Anda akan melihat kotak pesan yang mengatakan, "Mulai."
Jalankan Sebagai Tugas Terjadwal
Untuk meniru menjalankan sebagai tugas terjadwal, tutup database Anda dan luncurkan dengan perintah berikut:
"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly
Access akan berkedip sebentar di layar, lalu Anda akan melihat kotak dialog "About Windows", dan Access akan menutup sendiri.
Beberapa Catatan
AutoExec
adalah makro khusus yang berjalan secara otomatis saat startup- Meskipun
Startup()
rutin tidak mengembalikan nilai, kami mendeklarasikannya sebagaiFunction
karena kita tidak bisa langsung memanggilSub
dari makro di Access - Dalam penggunaan normal, kode jendela cmd akan dilewati
- Saya secara eksplisit memanggil
Application.Quit
di dalam blok "Nightly" saya untuk menghindari Access tergantung pada kode yang memerlukan interaksi pengguna (seperti kode MsgBox dalam contoh saya) - Saya selalu memanggil
Trim()
di sekitarVBA.Command
berfungsi untuk menghindari bug yang diperkenalkan dengan memimpin atau membuntuti spasi kosong pada baris perintah - Sebagai alternatif dari
/cmd
, Anda juga dapat menggunakan/x
ganti dan berikan nama makro khusus (Saya tidak melakukannya karena saya benci makro dengan hasrat seribu matahari yang panas; hanya dua makro yang pernah saya gunakan adalahAutoexec
danAutokeys
karena mereka menyediakan fungsionalitas khusus )
Catatan Akhir Tentang Penjadwal Tugas dan Mengotomatiskan Aplikasi Office Lainnya
Jika tugas Anda tampaknya tidak berfungsi saat Anda menyetelnya untuk dijalankan dalam semalam, coba alihkan opsi tugas terjadwal ke "Jalankan hanya saat pengguna masuk".
Aplikasi Office tidak dimaksudkan untuk berjalan dalam mode "non-interaktif" yang disebut Windows. Jika Anda menetapkan tugas terjadwal ke "Jalankan apakah pengguna masuk atau tidak", tugas itu akan berjalan dalam mode non-interaktif. Ini dapat menyebabkan berbagai masalah, terutama jika Anda mengotomatiskan Excel sebagai bagian dari proses berulang.
Solusi paling sederhana adalah mengunci workstation alih-alih log off dan membiarkan opsi disetel ke "Run only when user log on."
Itu mungkin tidak praktis dalam situasi Anda, tetapi ini merupakan pertimbangan penting yang harus diperhatikan. Anggap diri Anda telah diperingatkan:
Microsoft saat ini tidak merekomendasikan, dan tidak mendukung, Otomatisasi aplikasi Microsoft Office dari aplikasi atau komponen klien non-interaktif tanpa pengawasan