"

VBA和Python都可以處理Excel,VBA和Python各有什麼優勢?

有傳言說,微軟會使用Python來替代VBA處理Excel,真的會替代麼?

在知乎上看到這篇文章,我覺得分析得挺對的,特轉載一下,內容有所刪減。

來源:https://zhuanlan.zhihu.com/p/67949044

作者:楊洋(同濟大學 管理科學與工程博士)


對於這個問題,熟悉本人風格的同學一定能猜出來我的立場——“技術無高低,一切看需求”。客觀的說,VBA畢竟是上一代語言,而且20多年沒有變化,語言特性與Python等最新工具相比已經不夠先進。例如在處理集合類型的數據時,VBA裡面的數組、字典、集合等數據結構,怎樣看都不如Python中相應類型的功能強大。而且Python的各種語法糖用起來比VBA語法簡潔靈活得多,還可以隨時使用數據分析、人工智能等各種第三方工具庫,用起來真是不要太清爽。

但是先進性的缺失也恰恰引出另一個視角——為什麼在新技術層出不窮、競爭激烈的今天,VBA這個“老古董”至今還能活躍在各行各業,以至於微軟多少次想換掉它卻又無可奈何?

"

VBA和Python都可以處理Excel,VBA和Python各有什麼優勢?

有傳言說,微軟會使用Python來替代VBA處理Excel,真的會替代麼?

在知乎上看到這篇文章,我覺得分析得挺對的,特轉載一下,內容有所刪減。

來源:https://zhuanlan.zhihu.com/p/67949044

作者:楊洋(同濟大學 管理科學與工程博士)


對於這個問題,熟悉本人風格的同學一定能猜出來我的立場——“技術無高低,一切看需求”。客觀的說,VBA畢竟是上一代語言,而且20多年沒有變化,語言特性與Python等最新工具相比已經不夠先進。例如在處理集合類型的數據時,VBA裡面的數組、字典、集合等數據結構,怎樣看都不如Python中相應類型的功能強大。而且Python的各種語法糖用起來比VBA語法簡潔靈活得多,還可以隨時使用數據分析、人工智能等各種第三方工具庫,用起來真是不要太清爽。

但是先進性的缺失也恰恰引出另一個視角——為什麼在新技術層出不窮、競爭激烈的今天,VBA這個“老古董”至今還能活躍在各行各業,以至於微軟多少次想換掉它卻又無可奈何?

VBA 會被 Python 代替嗎?

Python:“咱是時代萌新、語法先進,工具豐富、天生網紅。” VBA:“切!俺是官方正統、穩定支持,Office從白堊紀開始就是俺家地盤!”

答案很簡單——各級用戶依然對VBA有著獨特的、暫時難以替代的需求。由於VBA推出時就完全面向非IT專業的用戶(例如財會金融、企業管理、醫療科研等),並且緊緊依存在Office系列軟件中,所以幾十年來已經在各類企業(特別是財金行業)積累了大量人氣,並留下了無法計數的小程序。對於仍然使用這些程序(VBA宏)的企業來說,VBA語言的性能是否強勁、語法是否現代都不重要,唯一重要的是——這些程序裡容納的是公司多少年積累下來的財務模型、管理流程、技術經驗。

比如多數財金公司裡面的Excel模型都是當年使用VBA寫的,雖然水平參差不齊但卻是企業的核心資產。所以只要它們能夠正確運行,就完全滿足了用戶的期望,而不到萬不得已,沒有人會願意花大價錢把這些模型用其他語言重新開發一遍。這也就是為什麼時至今日,會計審計、數據分析等崗位在招聘時依然希望應聘者掌握一些VBA技術,以便能夠繼續維護和完善這些模型,就像下面這位同學在Q群中提供的信息:

"

VBA和Python都可以處理Excel,VBA和Python各有什麼優勢?

有傳言說,微軟會使用Python來替代VBA處理Excel,真的會替代麼?

在知乎上看到這篇文章,我覺得分析得挺對的,特轉載一下,內容有所刪減。

來源:https://zhuanlan.zhihu.com/p/67949044

作者:楊洋(同濟大學 管理科學與工程博士)


對於這個問題,熟悉本人風格的同學一定能猜出來我的立場——“技術無高低,一切看需求”。客觀的說,VBA畢竟是上一代語言,而且20多年沒有變化,語言特性與Python等最新工具相比已經不夠先進。例如在處理集合類型的數據時,VBA裡面的數組、字典、集合等數據結構,怎樣看都不如Python中相應類型的功能強大。而且Python的各種語法糖用起來比VBA語法簡潔靈活得多,還可以隨時使用數據分析、人工智能等各種第三方工具庫,用起來真是不要太清爽。

但是先進性的缺失也恰恰引出另一個視角——為什麼在新技術層出不窮、競爭激烈的今天,VBA這個“老古董”至今還能活躍在各行各業,以至於微軟多少次想換掉它卻又無可奈何?

VBA 會被 Python 代替嗎?

Python:“咱是時代萌新、語法先進,工具豐富、天生網紅。” VBA:“切!俺是官方正統、穩定支持,Office從白堊紀開始就是俺家地盤!”

答案很簡單——各級用戶依然對VBA有著獨特的、暫時難以替代的需求。由於VBA推出時就完全面向非IT專業的用戶(例如財會金融、企業管理、醫療科研等),並且緊緊依存在Office系列軟件中,所以幾十年來已經在各類企業(特別是財金行業)積累了大量人氣,並留下了無法計數的小程序。對於仍然使用這些程序(VBA宏)的企業來說,VBA語言的性能是否強勁、語法是否現代都不重要,唯一重要的是——這些程序裡容納的是公司多少年積累下來的財務模型、管理流程、技術經驗。

比如多數財金公司裡面的Excel模型都是當年使用VBA寫的,雖然水平參差不齊但卻是企業的核心資產。所以只要它們能夠正確運行,就完全滿足了用戶的期望,而不到萬不得已,沒有人會願意花大價錢把這些模型用其他語言重新開發一遍。這也就是為什麼時至今日,會計審計、數據分析等崗位在招聘時依然希望應聘者掌握一些VBA技術,以便能夠繼續維護和完善這些模型,就像下面這位同學在Q群中提供的信息:

VBA 會被 Python 代替嗎?

除了處理“歷史遺留程序”之外,與Python等其他工具相比,VBA 在Office二次開發方面也確實有其獨到的優勢。原因主要在於,它是微軟公司官方指定的Office內置功能。

首先,內置功能意味著對於非計算機專業的人士來說,只要電腦上有Office基本就可以直接使用VBA,無需像Python那樣單獨安裝一個開發環境(以及xwing等額外的模塊)。不要小瞧這一點,因為很多正規企業裡都會嚴格限制員工在電腦上安裝軟件的權限,我在銀行工作時儘管崗位與IT有關,但因為不是開發崗,電腦上也禁止安裝一切開發工具,所以只能使用VBA和PowerShell(有些內控更嚴格的公司或事務所連VBA也禁止使用)。

內置功能的第二個好處是,它對Office內部對象的支持是最方便也最可靠的。當然,Python等開發工具可以通過COM接口等方式同樣調取Office對象,但畢竟是從外部調取Office,而VBA則是在Office內部工作,更加方便。比如,商業辦公中經常需要把複雜的操作先手工錄製為宏,然後再編程改造為自動化。而Office錄製的宏全是VBA代碼,如果是使用VBA開發,可以直接引用,無需再人工翻譯成Python代碼。

內置功能的第三個好處,是它可以隨Office文件(docm、xlsm等)直接分發給別人使用。而使用Python等,則不僅要發送一個office文件,還要發送一個程序文件。假如別人的電腦上沒有安裝過Python運行環境,那麼還需要把程序達成一個可執行包再發送,不僅麻煩,而且文件體積往往比較大。

此外,VBA是專門為調用Office功能而設計,所以對於只懂Office不懂程序設計的人士,學起來更加直接。初學者只需學會sub/endsub、cells 這三個關鍵字就能用程序控制Excel。相比之下,python是一個通用意義上的開發工具,操作Office只是它的功能之一。所以初學者需要了解更多知識(模塊導入、類與對象、文件讀寫等)才能開始Office編程,上手難度稍微高了一點。

所以總結一下,我們的觀點是:如果日常有大量工作嚴重依賴於Excel、Word 等 Office 工具,並且企業中禁止安裝Python等專業開發工具,那麼VBA仍然是最好的選擇。而如果已經熟悉 Python,辦公環境中又可以使用Python、不需要讓自己的程序隨Office文件同時發佈,那麼僅用Python就已足夠(我有很多數據科學家朋友就只用Python操作Excel、不懂VBA)。

不過只要時間和精力允許、二者都能學習一點,那麼充分結合二者優勢當然會實現最靈活強大的功能。因為就像本節課程中演示的,xlwings等工具既允許我們在Python中調用VBA,也允許我們在VBA中調用Python(這一點需要在Excel中安裝插件,所以留待實戰篇再講解)!所以當面對高級、複雜的需求時,我們完全可以針對不同功能分別使用VBA和Python編寫不同程序,再通過互相調用實現完美的效果。

"

VBA和Python都可以處理Excel,VBA和Python各有什麼優勢?

有傳言說,微軟會使用Python來替代VBA處理Excel,真的會替代麼?

在知乎上看到這篇文章,我覺得分析得挺對的,特轉載一下,內容有所刪減。

來源:https://zhuanlan.zhihu.com/p/67949044

作者:楊洋(同濟大學 管理科學與工程博士)


對於這個問題,熟悉本人風格的同學一定能猜出來我的立場——“技術無高低,一切看需求”。客觀的說,VBA畢竟是上一代語言,而且20多年沒有變化,語言特性與Python等最新工具相比已經不夠先進。例如在處理集合類型的數據時,VBA裡面的數組、字典、集合等數據結構,怎樣看都不如Python中相應類型的功能強大。而且Python的各種語法糖用起來比VBA語法簡潔靈活得多,還可以隨時使用數據分析、人工智能等各種第三方工具庫,用起來真是不要太清爽。

但是先進性的缺失也恰恰引出另一個視角——為什麼在新技術層出不窮、競爭激烈的今天,VBA這個“老古董”至今還能活躍在各行各業,以至於微軟多少次想換掉它卻又無可奈何?

VBA 會被 Python 代替嗎?

Python:“咱是時代萌新、語法先進,工具豐富、天生網紅。” VBA:“切!俺是官方正統、穩定支持,Office從白堊紀開始就是俺家地盤!”

答案很簡單——各級用戶依然對VBA有著獨特的、暫時難以替代的需求。由於VBA推出時就完全面向非IT專業的用戶(例如財會金融、企業管理、醫療科研等),並且緊緊依存在Office系列軟件中,所以幾十年來已經在各類企業(特別是財金行業)積累了大量人氣,並留下了無法計數的小程序。對於仍然使用這些程序(VBA宏)的企業來說,VBA語言的性能是否強勁、語法是否現代都不重要,唯一重要的是——這些程序裡容納的是公司多少年積累下來的財務模型、管理流程、技術經驗。

比如多數財金公司裡面的Excel模型都是當年使用VBA寫的,雖然水平參差不齊但卻是企業的核心資產。所以只要它們能夠正確運行,就完全滿足了用戶的期望,而不到萬不得已,沒有人會願意花大價錢把這些模型用其他語言重新開發一遍。這也就是為什麼時至今日,會計審計、數據分析等崗位在招聘時依然希望應聘者掌握一些VBA技術,以便能夠繼續維護和完善這些模型,就像下面這位同學在Q群中提供的信息:

VBA 會被 Python 代替嗎?

除了處理“歷史遺留程序”之外,與Python等其他工具相比,VBA 在Office二次開發方面也確實有其獨到的優勢。原因主要在於,它是微軟公司官方指定的Office內置功能。

首先,內置功能意味著對於非計算機專業的人士來說,只要電腦上有Office基本就可以直接使用VBA,無需像Python那樣單獨安裝一個開發環境(以及xwing等額外的模塊)。不要小瞧這一點,因為很多正規企業裡都會嚴格限制員工在電腦上安裝軟件的權限,我在銀行工作時儘管崗位與IT有關,但因為不是開發崗,電腦上也禁止安裝一切開發工具,所以只能使用VBA和PowerShell(有些內控更嚴格的公司或事務所連VBA也禁止使用)。

內置功能的第二個好處是,它對Office內部對象的支持是最方便也最可靠的。當然,Python等開發工具可以通過COM接口等方式同樣調取Office對象,但畢竟是從外部調取Office,而VBA則是在Office內部工作,更加方便。比如,商業辦公中經常需要把複雜的操作先手工錄製為宏,然後再編程改造為自動化。而Office錄製的宏全是VBA代碼,如果是使用VBA開發,可以直接引用,無需再人工翻譯成Python代碼。

內置功能的第三個好處,是它可以隨Office文件(docm、xlsm等)直接分發給別人使用。而使用Python等,則不僅要發送一個office文件,還要發送一個程序文件。假如別人的電腦上沒有安裝過Python運行環境,那麼還需要把程序達成一個可執行包再發送,不僅麻煩,而且文件體積往往比較大。

此外,VBA是專門為調用Office功能而設計,所以對於只懂Office不懂程序設計的人士,學起來更加直接。初學者只需學會sub/endsub、cells 這三個關鍵字就能用程序控制Excel。相比之下,python是一個通用意義上的開發工具,操作Office只是它的功能之一。所以初學者需要了解更多知識(模塊導入、類與對象、文件讀寫等)才能開始Office編程,上手難度稍微高了一點。

所以總結一下,我們的觀點是:如果日常有大量工作嚴重依賴於Excel、Word 等 Office 工具,並且企業中禁止安裝Python等專業開發工具,那麼VBA仍然是最好的選擇。而如果已經熟悉 Python,辦公環境中又可以使用Python、不需要讓自己的程序隨Office文件同時發佈,那麼僅用Python就已足夠(我有很多數據科學家朋友就只用Python操作Excel、不懂VBA)。

不過只要時間和精力允許、二者都能學習一點,那麼充分結合二者優勢當然會實現最靈活強大的功能。因為就像本節課程中演示的,xlwings等工具既允許我們在Python中調用VBA,也允許我們在VBA中調用Python(這一點需要在Excel中安裝插件,所以留待實戰篇再講解)!所以當面對高級、複雜的需求時,我們完全可以針對不同功能分別使用VBA和Python編寫不同程序,再通過互相調用實現完美的效果。

VBA 會被 Python 代替嗎?

因此從我們的角度看,單純討論二者誰強誰弱並沒有意義。只要我們能夠理解二者各自的長項和不足,就能針對每一項任務找出最合適的方案。這也就是本文標題中引用 “擱置爭議、共同開發”的含義所在。

"

相關推薦

推薦中...