我必須在Excel中遍歷大約25張用於執行操作的表單。我是用vba做的,發現它非常慢,因此想知道我是否可以使用C#這將有助於我加快這一進程。我們可以用C#寫一個宏嗎?Excel
回答
你在做什麼操作?首先,你不需要事先編寫你自己的VBA代碼。您可以簡單地在工作簿中記錄一個宏並將其保存在C:\ Program Files \ Microsoft Office \ Office12 \ Xlstart中。 Excel將記錄一個宏並使其在您打開的所有工作表中可用。
您還可以在上述過程中調整自動生成的VBA代碼以適合您的需要。
就個人而言,我不認爲編寫一個C#插件來完成這項工作會加快任務。 VBA是專門用於處理Office對象模型的語言。如果這樣做不夠快,那麼你需要看看你正在執行什麼操作?
我想創建一個C#加載項來操縱Excel對象模型並且維護它是太多了。這也將涉及一個很大的學習曲線。
使用Excel _record宏_功能創建的宏往往**非常慢**,因爲它們發出大量不必要的_activate_和_select_命令。記錄一個短的宏以查看如何完成某些操作可能很有用,但是如果執行速度完全在意,則需要重寫記錄的宏。 – riderBill 2015-12-01 04:32:48
儘管您可能能夠使用VSTO在C#中編寫與當前VBA宏相當的內容,但我對它是否會對性能產生顯着影響表示懷疑。
在這兩種情況下,您都會操縱相同的Excel COM對象,並且執行時間可能非常相似。
您的表現將主要取決於您用於操作Excel對象的技巧。作爲一個簡單的例子,您可以在單個語句中將Excel範圍中的值分配給2維數組:這比迭代代碼中的行和列並將值逐個複製到數組中要快得多。
我建議你發佈一些你覺得太慢的VBA代碼,並要求提高性能的提示。
您可以嘗試使用我的ESharper加載項在C#中編寫Excel自動化命令。這比創建單獨的C#應用程序或加載項更容易,並且您可以訪問Excel對象模型和Excel C API,並提供更多性能優化選項。
- 1. 我們可以用c寫一個word文件嗎?
- 2. 可以編寫一個運行excel的宏嗎?
- 3. 我可以製作一個HALT_ONCE宏嗎?
- 4. Excel宏 - 可以解釋這個嗎?
- 5. 我可以使用Xcode編寫一個Excel加載項嗎?
- 6. 我們可以使用c#編寫NNTP服務器嗎?
- 7. 我們可以用C編寫iphone程序嗎?
- 8. 我們可以自己寫一個EOF角色嗎?
- 9. 我可以使用C中的宏定義宏嗎?
- 10. 我們可以用ng-click編寫多個調用函數嗎?
- 11. C++中的宏可以定義宏嗎?
- 12. 編寫一個將宏寫入另一個Excel文件的宏
- 13. 我可以只寫一個foreach嗎?
- 14. 你可以在另一個excel表格中運行宏嗎?
- 15. 我可以使這個宏更快嗎?
- 16. 我們可以用c語言創建一個沒有定義的宏#define
- 17. 可以通過ssis處理宏(Excel)嗎?
- 18. 我們可以使用Outlook插件創建並運行宏嗎?
- 19. 我們可以發送一個參數給C#中的TestInitialize嗎?
- 20. 我們可以在C#中獲得一個canthrow語句嗎?
- 21. 我們可以有一個虛擬的靜態方法嗎? (C++)
- 22. C++:我們可以收集類型嗎?
- 23. 我可以使用clojure'for'宏來反轉一個字符串嗎?
- 24. 我可以使用extern宏嗎?
- 25. 我們可以用C語言的語法編寫Objective-C代碼嗎?
- 26. 我們可以使用C#比較兩個JavaScript文件嗎?
- 27. 我可以創建一個擴展爲多個值的宏嗎?
- 28. 我們可以寫出一個通用陣列/片重複數據刪除嗎?
- 29. 我們可以用selenium webdriver建立一個應用程序嗎?
- 30. 我們可以使用.NET System.Windows.Forms.Timer來替換Excel VBA Application.onTime嗎?
我不認爲你可以直接在宏中使用C#。 您可以創建一個用C#編寫的AddIn來處理表單。 如果它加快速度,你的過程不能得到回答,直到你描述你在做什麼。 – Khh 2010-09-03 08:33:53
@gizgok:嗨,請接受我的回答 – abatishchev 2017-09-03 02:57:04