Mengembangkan perpustakaan c# yang dipanggil dari VBA

Hai, proses yang saya lakukan sekarang adalah membuat fungsi di VBA seperti:

Sub TPS_Test()

    Dim classLib As Object
    ' remember you must type the set... line in its entirity when incrimenting to new version.  Something about their compiling
    
    Set classLib = New RoadTrip_v14_1_9.TripDoc
    classLib.TPS_Test Excel.ActiveWorkbook, False
    
End Sub

Dan menambahkan perpustakaan C# dari VBA - alat - referensi (Kompilasi perpustakaan sebagai perpustakaan tipe terlebih dahulu).

Jadi itu berfungsi dengan baik, dan saya sebenarnya bisa melampirkan perpustakaan ke proses Excel.exe dan melakukan debug dengan cara itu.

Namun, ini merupakan keluhan PITA karena setiap perubahan kode yang saya buat, saya perlu mengkompilasi ulang, mengimpor ulang ke VBA, dan menjalankannya lagi. Jadi proses saya sebenarnya adalah:

  1. Tambahkan nama proyek (Myproject_V1).
  2. Menyusun
  3. Hapus referensi ke perpustakaan lama di VBA
  4. Tambahkan referensi ke perpustakaan baru.
  5. Ubah nama kelas di VBA (set classLib = new Myproject_v1)
  6. Lampirkan perpustakaan C# ke proses excel.
  7. Jalankan kembali modul VBA.

Ini cukup melelahkan dan memakan waktu.

Apakah ada cara yang lebih baik?


person Rob    schedule 11.02.2021    source sumber
comment
Jika Anda melanjutkan dengan cara itu, mengubah nama perpustakaan, saya khawatir Anda tidak punya pilihan lain. Tetapi menjaga nama tidak berubah dan melacak versi aplikasi dengan cara yang berbeda, secara teoritis, tidak diperlukan proses yang rumit, jika perpustakaan yang direferensikan selalu ditemukan di jalur yang sama.   -  person FaneDuru    schedule 11.02.2021
comment
@FaneDuru Anda masih harus melalui proses melampirkan perpustakaan yang baru dikompilasi ke proyek VBA kan?   -  person Rob    schedule 11.02.2021
comment
Saya pikir tidak. Secara teoritis, sistem tidak dapat mengetahui konten perpustakaan yang direferensikan, jika tetap menggunakan nama yang sama dan berada di jalur yang sama. Apakah Anda mencoba cara ini? Saya akan mencoba merujuknya dari folder solusi 'Bin'. Saya harus mengakui bahwa saya tidak melakukan hal serupa karena saya tidak membutuhkan hal seperti ini. Saya berbicara secara teoritis ...   -  person FaneDuru    schedule 11.02.2021
comment
Anda dapat mengkompilasi ulang perpustakaan tanpa harus menambahkan ulang setiap kali di VBA jika Anda tidak mengubah namanya. Saya melakukan ini sepanjang waktu. Dilihat dari komentar Anda, Anda belum menemukan manfaat pengujian unit. Cari MSTest untuk C#. Ini cukup mudah digunakan. Pada dasarnya Anda harus memiliki serangkaian tes di kelas C# terpisah di proyek kedua dalam solusi Anda yang melatih berbagai metode yang disediakan kelas Anda sehingga ketika Anda masuk ke VBA Anda tahu bahwa kelas tersebut berfungsi sebagaimana mestinya.   -  person freeflow    schedule 11.02.2021


Jawaban (1)


Terima kasih kepada responden. Cara terbaik untuk melakukan ini adalah dengan membuat pengujian unit dalam C# yang akan memuat file excel kemudian menjalankan kode C# terhadapnya, di visual studio.

Hal kedua seperti yang mereka tunjukkan, Anda dapat menggunakan kembali nama file yang sama, cukup tutup excel, kompilasi, buka excel.

person Rob    schedule 18.02.2021