Pencarian untuk tooltip fungsi kustom Excel

100

Pertanyaan ini telah ditanyakan sebelumnya , tetapi setiap kali jawaban yang diterima hanyalah pengunduran diri untuk memberikan deskripsi fungsi menggunakan Application.MacroOptions( VBA6 ) ( VBA7 ), tetapi informasi ini tidak benar-benar muncul sebagai tooltip, jadi itu tidak menyelesaikan masalah saya.

Hasil

Apa yang kita semua inginkan adalah untuk dapat mendefinisikan fungsi kustom dengan cara apapun (VBA, VSTO, atau add-in COM) dan memberikan pengguna manfaat dari deskripsi pop-up / tool-tip dari fungsi dan parameternya, seperti muncul untuk setiap fungsi Excel bawaan, baik sebaris atau di bilah rumus:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Jawaban yang diterima secara luas untuk kebutuhan ini adalah bahwa itu tidak mungkin untuk fungsi adat, tetapi saya ingin menantang kepercayaan itu.

Masalah

Saat ini, hal terbaik yang pernah saya lihat dilakukan orang adalah mendefinisikan fungsi (sering kali menggunakan panggilan MacroOptions di atas) sehingga saat membuka dialog fungsi (tombol fx di bilah rumus) fungsi dan deskripsi parameternya muncul seperti di bawah ini:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, ini adalah fungsi yang rumit dengan banyak parameter. Jika pengguna tidak mengetahui dialog "argumen fungsi" ini dan cara memunculkannya, dan hanya akrab dengan tooltip standar Excel, mereka hanya akan melihat nama rumus dan tidak ada bantuan tambahan:

masukkan deskripsi gambar di sini

Dengan itu mereka tidak memiliki kesempatan untuk memberikan parameter yang diperlukan dengan benar. (Tanpa membaca dokumentasi, yang tentu saja tidak pernah dilakukan oleh pengguna.)

Sekarang, pengguna yang mahir mungkin tahu bahwa dengan mengetik Ctrl+ Shift+ A, mereka akan diberikan daftar parameter fungsi yang dilengkapi secara otomatis seperti:

masukkan deskripsi gambar di sini

Tetapi tentu saja, kami memiliki masalah yang sama seperti di atas yaitu bahwa pengguna excel standar hanya akan terbiasa dengan perilaku default dari gambar pertama dan mungkin tidak akan pernah mempelajari fitur itu.

Harus jelas pada titik ini mengapa ini tidak cukup dan kami menginginkan apa yang dimiliki setiap fungsi bawaan - tip alat in-line yang memberi tahu pengguna bagaimana menggunakan fungsi tersebut.

The Tease

Pada awalnya, saya mungkin yakin bahwa ini tidak mungkin kecuali dengan fungsi aplikasi Excel asli. Add-in dan VBA adalah fitur yang dapat diperpanjang, dan tip alat ini mungkin tidak dapat diperpanjang. Tetapi teori itu tertantang oleh keberadaan add-in Analysis Toolpak. Tentu, ini dibangun di Microsoft, tetapi ANALYS32.xll adalah add-in XLL mandiri seperti yang dapat diproduksi di VB, C, C ++, dan C #. Benar saja, ketika XLL ini dimuat ke dalam aplikasi, fungsi yang disediakannya memiliki tip alat yang sama dengan fungsi excel asli:

masukkan deskripsi gambar di sini

Tentunya jika informasi ini entah bagaimana dikodekan dalam file XLL ini dan diteruskan ke Excel, ada cara untuk menirunya dengan Add-in kita sendiri? Sekarang saya berada pada titik di mana saya akan mulai belajar sedikit tentang dekompilasi dan melihat apakah saya dapat merekayasa balik apa pun yang terjadi di toolpak analisis.

Bagaimana Anda Dapat Membantu

Saya hampir yakin bahwa saya telah meneliti semua informasi yang tersedia untuk umum tentang masalah ini. Jika seseorang mengetahui sesuatu yang saya tidak tahu yang mungkin dapat membantu dengan hal ini, jangan ragu untuk ikut campur. Saya sangat tidak terbiasa dengan dlls / xlls yang dikompilasi dengan rekayasa terbalik, jadi jika seseorang merasa ingin membuka salinan lokal Analysis32.xll dan mencari tahu apa yang terjadi dengan definisi fungsi kustomnya, saya akan sangat berterima kasih. Jika tidak, saya akan terus menggali ini sendiri sampai saya menemukan jalan buntu dan melaporkan kembali apa yang saya temukan.

Alain
sumber
4
Tidak dimungkinkan untuk membuat atau memperlihatkan keterangan alat untuk argumen UDF di versi Excel saat ini menggunakan salah satu teknologi yang tersedia. Sumber oleh MVP: answers.microsoft.com/en-us/office/forum/office_2007-customize/...
silkfire
.NET Reflector tidak dapat membuka ANALYS32.xll, menyimpulkan bahwa ini bukan Majelis .NET. Ini mengejutkan saya. Sepertinya saya harus mencoba mendekompilasinya ke bahasa assembly?
Alain
5
Kedengarannya menarik, tapi saya pernah (Office 97) membuat tooltips yang menggunakan winapi. Dan dengan cara itu Anda bisa melakukannya. Kalau itu menarik saya bisa menggali infonya dan mencoba menjawabnya.
Archlight
1
Saya akan mendapatkannya juga Anda, perlu waktu untuk menggali ini. Tapi itu harus bangun di sini untuk digunakan orang lain. Kombo rendah dan jahatnya dari winapi / vba / dan saya pikir saya membuatnya sebagai vb.dll tetapi tidak ada masalah yang mengangkatnya ke .net
Archlight
1
Tampaknya tim pengembang Excel mengambil suara untuk fitur ini di sini: excel.uservoice.com/forums/…
Alain

Jawaban:

40

Saya telah memposting proyek bukti konsep ke GitHub sebagai Excel-DNA IntelliSense , menerapkan ini.

Menggunakan kelas Otomasi UI untuk memantau kejadian antarmuka pengguna Excel yang sesuai, formulir ditampilkan bila sesuai.

Kode tersebut dibungkus sebagai Excel-DNA add-in , dan berfungsi pada mesin Excel 2013 / Windows 8 saya. Saya telah menguji satu konfigurasi lain (64-bit Excel 2010 di Windows Server 2008) dan mengalami masalah serius.

Untuk fungsi C # yang ditentukan dengan atribut Excel-DNA seperti ini:

[ExcelFunction(Description = 
    "A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
    [ExcelArgument(Name = "Augend", 
                   Description = "is the first number, to which will be added")] 
    double v1,
    [ExcelArgument(Name = "Addend", 
                   Description = "is the second number that will be added")]     
    double v2)
{
    return v1 + v2;
}

kami mendapatkan kedua deskripsi fungsi

Deskripsi fungsi

dan saat memilih fungsi, kami mendapatkan bantuan argumen

Bantuan Argumen

Kelihatannya bagus, tetapi semuanya masih sangat tidak stabil, hanya berfungsi di mesin saya dan terkadang membuat Excel crash. Ini mungkin permulaan, meskipun ...


Pembaruan 9 Mei 2014:

Saya telah membuat beberapa kemajuan untuk mengetahui bagaimana membuat argumen membantu bekerja di bawah versi Excel dan Windows yang lebih lama. Namun, masih membutuhkan kerja keras yang lumayan banyak agar semuanya bisa diandalkan. Siapapun yang ingin membantu dengan ini harus menghubungi saya secara langsung.


Pembaruan 18 Juni 2016:

Dukungan Excel UDF IntelliSense untuk add-in Excel-DNA dan fungsi VBA sekarang sedang diuji. Lihat halaman Memulai di GitHub untuk instruksi.

Govert
sumber
Sayangnya, sepertinya Excel 2013 atau Windows 8 atau keduanya diperlukan untuk dukungan UI Automation TextRange yang digunakan oleh bantuan argumen. Saya ingin mendengar dari siapa saja yang memiliki pengalaman Otomasi UI Windows ...
Govert
Apakah Anda mencoba mereferensikan rakitan Excel yang lebih lama sebelum mengompilasi ke mesin yang lebih lama?
Daniel Möller
1
Referensi ke model objek Excel tidak benar-benar terlibat dalam hal ini. Tetapi tentu saja ada versi Otomasi UI yang berbeda yang mungkin mempengaruhi banyak hal ...
Govert
1
Sejauh ini, ini adalah jalan di depan apa pun di luar sana, jadi Anda mendapatkan suara saya untuk hadiahnya. Saya berniat untuk melihat apakah saya dapat berkontribusi untuk solusi ini dalam waktu dekat, jadi perhatikan permintaan pull saya!
Alain
@ Alain Kerja bagus untuk Govert! & Alain Saya ingin melihat Anda menguasai ini.
CodeCamper
1

Bagaimana tentang

  1. Capture memasukkan teks pada acara tekan tombol sel. seperti ini
  2. Periksa apakah teks tersebut cocok dengan fungsi khusus.
  3. Jika cocok, tunjukkan sesuatu seperti label atau bentuk untuk berpura-pura menjadi tooltip. seperti ini

Apakah ini dapat diterima?

Ini sedikit jelek tapi lebih mudah.

Clxy
sumber
Ini adalah titik awal yang menarik yang saya pertimbangkan, tetapi mengalami komplikasi ketika bentuk pengeditan rumus yang lebih canggih ditemukan (seperti mengklik di suatu tempat di tengah dan menghapus / menambahkan karakter, atau menyorot dan menimpa bagian rumus, atau menggunakan rumus khusus di tengah rumus lain.) Ini memerlukan lebih dari sekadar memeriksa penekanan tombol, kita perlu melihat konten saat ini dari bilah rumus atau sel di pengeditan tengah. Ini juga dapat dilakukan dengan beberapa perpustakaan dll yang diimpor dan menangani peretasan. Pasti layak untuk ditelusuri.
Alain
-1

Apa itu XLL?

XLL adalah DLL yang mengekspor beberapa prosedur yang disebut oleh Excel atau Add-in Manager Excel. http://msdn.microsoft.com/en-us/library/office/bb687861.aspx

Bagaimana Anda mengembangkan XLL?

Excel XLL SDK dengan Visual C ++ (atau apapun yang dapat mengkompilasi DLL dan memanggil prosedur SDK)

Di mana saya dapat menemukan panduan cepat untuk membuat XLL sederhana?

http://support.microsoft.com/kb/178474

Bagaimana saya mendapatkan tooltips?

  1. Menerapkan fungsi Anda sebagai prosedur dan mengekspornya
  2. Menerapkan dan mengekspor prosedur xlAutoOpen (void) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
  3. xlAutoOpen hanya perlu memanggil xlfRegister - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
  4. Untuk keterangan alat, perhatian khusus untuk: pxArgumentText, pxFunctionHelp, pxArgumentHelp1

Sayangnya, add-in Analysis Toolpak juga tidak memiliki tooltips.

Solusi saya salah, tetapi dengan informasi yang salah diposting oleh poster asli. Menampilkan gambar dengan BINOMDIST, jika link nya dengan jelas menunjukkan bahwa ini bukan fungsi ANALYS32.xll.

Ini berarti saya mencoba untuk memecahkan pertanyaan yang tidak mungkin. Karena tidak ada XLL yang bisa melakukan apa yang diminta poster. Jika Anda menemukan versi Excel yang menampilkan keterangan alat XLL, beri tahu saya.

Tentang apa yang ditanyakan poster, mencoba meniru perilaku XLL, saya yakin jawaban saya adalah yang paling benar dalam kaitannya dengan apa yang ANALYS32.xll lakukan.

Marcos Zolnowski
sumber
3
Sayangnya, mendaftarkan UDF dengan xlfRegister tidak menyebabkan Excel menampilkan informasi tersebut sebagai keterangan alat intellisense dalam lembar. Deskripsi, dll. Yang terdaftar di sana hanya ditampilkan di kotak dialog Argumen Fungsi, yang muncul saat Anda menekan tombol fx. Tapi bukan itu yang ditanyakan oleh poster asli.
Govert
@Govert apakah masih seperti ini sekarang di tahun 2016?
beppe9000
@ iyaa_jogja Anda bisa mendapatkan tooltips IntelliSense dalam lembar untuk UDF (ditentukan dalam XLL atau VBA) menggunakan ekstensi IntelliSense Excel-DNA: github.com/Excel-DNA/IntelliSense
Govert