MS Project Macro tidak akan menjalankan kecuali dari menu "view macro"


2

Jadi saya punya makro yang tidak memiliki kesalahan. Jika saya masuk ke visual basic dan tekan F5 atau F8 itu akan berjalan. Jika saya pergi ke menu View Macros dan memilihnya, itu akan berjalan.

Namun, jika saya mengatur pintasan keyboard, letakkan di toolbar akses cepat, atau tambahkan ke pita, tidak ada yang melakukan apa pun.

Ini adalah MS Project 2010 Professional. Informasi versi. Sistem Informasi.

Informasi tambahan: Saya membuat makro baru dari awal dan memiliki gejala yang sama persis. Tampaknya menjadi masalah dengan program, bukan makro itu sendiri.


Di mana kode itu berada? Di global.mpt, modul publik, atau modul pribadi? Bagaimana prosedurnya dinyatakan? Apakah ini sub publik atau swasta? FWIW Saya tidak bisa mendapatkan pintasan keyboard untuk bekerja di Project 2013 Pro, tetapi kenyataan bahwa itu tidak akan berjalan dari toolbar akses cepat adalah masalah.
Rachel Hettinger

Ini adalah modul di Global.mpt. Prosedur ini dinyatakan sebagai sub publik (sub Macro1).
Greg Viers

Sudahkah Anda memeriksa pengaturan Pusat Kepercayaan Anda (dari kotak Opsi Proyek)? Dan untuk memastikan, dapatkah Anda meletakkan breakpoint pada baris pertama kode untuk memastikan sub tidak dipanggil saat diluncurkan dari toolbar akses cepat?
Rachel Hettinger

Ya saya menggunakan breakpoint. Saya juga mencoba dengan debug.print "hello" sebagai baris pertama. Tidak dipanggil. Saya mengatur pusat kepercayaan untuk menjalankan semua makro, masih tidak berjalan.
Greg Viers

Saya menemukan beberapa posting lain dengan masalah ini, tetapi tidak ada solusi. Berikut adalah beberapa hal untuk dicoba: 1) Periksa Item yang Dinonaktifkan (Opsi: Add-in). 2) Reboot. 3) Coba di komputer lain. 4) Tutup Project, ganti nama global.mpt untuk menyisihkannya, dan mulai dengan file global baru (kalau-kalau rusak).
Rachel Hettinger

Jawaban:


0

Ekspor modul Anda, buka di Notepad atau Notepad ++. Gulir ke definisi untuk prosedur makro Anda; harus ada satu Attributeatau dua instruksi di baris pertama tubuh makro Anda:

Public Sub DoSomething()
Attribute DoSomething.VB_Description = "Does something"
Attribute DoSomething.VB_ProcData.VB_Invoke_Func = "A\n14"
    MsgBox "Hello"
End Sub

Di sini \n14singkatan dari kombinasi tombol Ctrl+ Shift, jadi DoSomethingmakro ini ditugaskan untuk Ctrl+ Shift+ A.

Jika VB_ProcDataatributnya tidak ada, tambahkan. Perhatikan bahwa sintaks untuk atribut anggota memerlukan nama anggota untuk memenuhi syarat atribut (yaitu nama prosedur DoSomething, sehingga instruksi atribut berjalan DoSomething.VB_ProcData...).

Kemudian simpan file, kembali ke proyek VBA Anda, hapus modul, dan impor file yang dimodifikasi.


Selesai Tidak ada perubahan.
Greg Viers

@TheTTGBeli Saya tidak punya MS-Project yang tersedia, tapi saya akan menjalankan VM ketika saya pulang malam ini. Atribut harus agnostik-host (diuji ini di Excel), tetapi host yang diberikan memiliki semua hak untuk mengabaikannya. Apakah ada jendela makro dengan tombol opsi ? Apakah tombol Opsi ini memunculkan dialog kecil di mana Anda dapat memasukkan tombol pintas (dan deskripsi)?
Mathieu Guindon

Iya nih. Ketika saya menambahkan tombol pintasan, tombol pintasan tidak melakukan apa-apa.
Greg Viers

Baik. Tugas dialog itu adalah menulis Attributenilai - nilai tersembunyi ini dalam modul. Agaknya jika ada di sana, maka tombol pintas harus dihormati oleh aplikasi host. Apakah ada sesuatu di Microsoft User Voice tentang hal itu?
Mathieu Guindon

Saya pikir itu hanya untuk Office 365. Ini adalah Project 2010. Bagaimanapun, Google tidak menghasilkan apa-apa.
Greg Viers

0

Ini ternyata menjadi masalah dengan konfigurasi profil windows saya dengan jaringan perusahaan di sini. Di dalam proyek, ada 2 salinan template global saya yang menunjukkan, satu adalah "Global.MPT" yang lain adalah "Global (+ perusahaan yang tidak di-cache". Memindahkan makro saya ke yang kedua telah menyelesaikan masalah ini.


-1

Saya menemukan masalah ini ketika menambahkan Makro ke tautan cepat di MSP Pro 2016.

Makro direkam daripada dikodekan secara langsung dan membuat Makro baru (misalnya DoSomething()contoh dalam jawaban Mathieu) bekerja.

Menyalin kode makro ke dalam Notepad, menghapus makro asli dan membuat versi baru dengan menempelkan atau mengetik teks dalam bekerja.

Sub Baselining()

    baselineSave All:=True, Copy:=0, Into:=0
    baselineSave All:=True, Copy:=0, Into:=14

End Sub

Saya sudah mencoba ini, tanpa efek. Maaf.
Greg Viers
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.