7年C#,5年EXCEL VBA,3年PHP,2年python,我来谈谈。
你就辅助办公office为主,直接vba别犹豫。
你要是写服务类的,写完放在服务器上,不分发客户端,配置好一份环境,提供出web接口给大家用,那你用Python,这个也不用犹豫。
所以还是看应用场景和环境。
对象模型规范
学完vba,再看python那些库才反人类openpyxl,xlrd,xlwt,xlwings。竟然还有改接口的事儿。今天引用完的包,一升级不好使了,气人不。
VBA不一样,大厂微软风范,很规范。其实本质上其实你就用的是人家设计好的对象嘛,自己写逻辑。谁的内置对象关系设计的好用谁的。
不用过多操心用户界面设计
vba在excel里,界面你也不用写了。参数直接用工作表单元格里写。按钮一拖就是一个。除了拖控件还可以用各种形状当做按钮,各种形状特效一设也挺美观。还不够用?还可以直接自定义ribbon菜单栏。一个xlsm文档就是程序,又是参数配置界面,又是数据源,又能展示数据结果。如果你已经会了 vb (指的是vb .net那个编程语言)或者c#,写xll加载项还也挺好用的。当然这不在讨论范围,因为他不是vba。
不会写代码可以录
vba不会写了还能录代码。录完,会英语直接就看懂了,改吧改吧就能用了。如果咱平时就是经常用Excel的。很容易理解一段代码代表了什么操作。毕竟是你自己录的代码啊,你操作了什么你还不知道嘛。而且调试的时候单步执行,很直观,一句一个效果能看得到的。学习起来更容易。
而Python不会写的你要查文档,写文档的人啥德行,咱也不知道。除了xlwings,你基本上都是运行完了才能看到结果。中间哪里错了也不知道,咱也没处问。对于小白调试起来很有难度的。
分发容易
最后你拿python写完给谁用啊?是不是还要教别人怎么用命令行。或者再给python配个UI?配置个python环境?打包exe?是不是还要64位,32位各搞一套。
不如用vba给交付一个xlsm搞定一切。只要是可以有excel,双击打开,启用宏,点你设计好的按钮开跑就完事了,方便的要死。
总结
难学?这玩意看天分。我觉得这里得谈“及时满足”。你能以最快速度做出一个能用的程序,就能更快速带来学习满足感,你就不会觉得它难。就会更有兴趣去钻研学习。反观学习坡度太大会打消积极性,就更容易放弃。
所以结论是,我还是觉得vba简单啊,因为我是小白我能录,我是大神我能写。改版面格式,快速填表模板一类的小程序,2分钟就能做好,即刻交付给同事们一起使用。运行起来不用配环境,爽爆了。
评论有人提到兼容性,确实虽然vba代码也有兼容性的问题,但基本上不引用外部库的话,纯玩excel已有对象的话,基本没有兼容性问题。很少出现这个代码换个版本的office的就运行不了的情况。尤其版本只升不降的话就更少了。你想想excel还在支持宏表函数,还在支持xls格式,还在支持Lotus公式,微软还在支持老掉牙的玩意,就问你感不感动?
而Python,兼容性?怕是换个电脑都不能直接运行吧。配环境,下各种包对新手来说太不友好了。