Pertanyaan Bisakah kita menulis makro di C # untuk Excel


Saya harus melintasi sekitar 25 lembar dalam excel untuk melakukan operasi. Saya melakukannya menggunakan vba dan menemukan itu benar-benar lambat, maka ingin tahu apakah saya bisa menggunakan C # dan jika melakukan itu akan membantu saya mempercepat proses.


32
2017-09-03 08:31


asal


Jawaban:


Panggilan C # dari buku kerja Excel seperti makro VBA - Anda tidak bisa

Mengakses buku kerja Excel dari aplikasi C # - Anda bisa. Ini disebut Microsoft Visual Studio Tools for Office (VSTO)


30
2017-09-03 09:22



Meskipun Anda mungkin dapat menulis setara dalam C # ke makro VBA Anda saat ini menggunakan VSTO, saya sangat meragukan jika itu akan membuat perbedaan yang signifikan terhadap kinerja.

Dalam kedua kasus, Anda akan memanipulasi objek Excel COM yang sama dan waktu pelaksanaannya kemungkinan akan sangat mirip.

Kinerja Anda akan sangat bergantung pada teknik yang Anda gunakan untuk memanipulasi objek Excel. Sebagai contoh sederhana, Anda dapat menetapkan nilai dari Range Excel ke array 2-dimensi dalam satu pernyataan: ini jauh lebih cepat daripada mengiterasi melalui baris dan kolom dalam kode dan menyalin nilai ke dalam array Anda satu per satu.

Saya sarankan Anda memposting bit kode VBA yang Anda temukan terlalu lambat, dan mintalah tips untuk meningkatkan kinerja.


7
2017-09-03 10:08



Anda dapat mencoba saya ESharper add-in untuk menulis perintah otomatisasi Excel di C #. Lebih mudah daripada membuat aplikasi C # atau add-in terpisah, dan Anda akan memiliki akses ke kedua model objek Excel dan Excel C API dengan lebih banyak opsi untuk optimalisasi kinerja.


4
2018-04-16 18:28



Operasi apa yang sebenarnya Anda lakukan? Pertama Anda tidak perlu menulis kode VBA sendiri. Anda cukup merekam makro di buku kerja dan menyimpannya di C: \ Program Files \ Microsoft Office \ Office12 \ Xlstart. Excel akan merekam makro dan membuatnya tersedia di semua lembar yang Anda buka.

Anda juga dapat men-tweak kode VBA yang dibuat secara otomatis dalam proses yang disebutkan di atas agar sesuai dengan kebutuhan Anda.

Secara pribadi, saya tidak berpikir menulis C # add-in untuk melakukan pekerjaan akan mempercepat tugas. VBA adalah bahasa yang khusus dibuat untuk bekerja dengan Model Objek Office. Jika itu tidak bekerja cukup cepat maka Anda perlu melihat operasi apa yang Anda lakukan?

Saya pikir membuat C # add-in untuk memanipulasi Excel Object Model dan mempertahankannya terlalu banyak yang harus dilakukan. Ini juga akan melibatkan kurva pembelajaran yang besar.


-1
2017-09-03 09:17