2023-08
10

开始VBA+ADO+SQL

By xrspook @ 8:20:30 归类于: 烂日记

几天之前我第一次听说VBA+ADO+SQL可以组成一个非常牛逼的东西。当我听说要在VBA里面运行SQL的时候,我有怀疑过这是不是我以前遇到的那一款?但是在SQL的外面又有一个ADO,这就很不一样,因为ADO这个东西你甚至可以控制只执行一次,然后就自动消失.当然你可你也可以用打开的方式去折腾,但是对低端用户来说,光是执行就可以完成大多数事情。

在学习VBA的时候,首先会告诉你,如果要操作工作簿,就得先把它打开。用完不用了,你还得把它关上,不打开工作簿是没办法进行操作的。同样,在学习用python控制Excel的时候,也是这么个思路。按照正常人的想法,你要获取里面的东西,当然得开门,哪怕实际上你只是进去看一看,你并不改动里面的东西。比如在做查询的时候,实际上你不过是收集里面的资料,你不需要改动里面的任何摆设,把资料收集回来了以后你可以再加工,但是原始的那个东西是不变的。为什么跨表表查询的时候,我首先想到的是Power Query,就是因为那个东西本来就是开发出来做数据清洗的。核心的观点就是不改动原始数据,通过可重复的步骤,你就能得到规范的东西,然后再给其它玩意调用。但是VBA+ADO+SQL彻底颠覆了我过往的认知。因为这三个东西加起来就意味着你要获取工作簿里面的东西,你根本不需要打开它。通过链接的方式,就可以到达那个地方,虽然实际上这样是无法修改文件内容的,但是跟PQ一样,可以对已经获取的东西进行再加工。所以准确来说,虽然做出来的菜是不一样的,但实际上原料还是那些,牛逼的地方在于,那三个东西甚至连文件都不用打开,但是PQ在运行的时候,实际上是要打开文件。如果你的查询设置比较复杂,他还得把同一个源文件一次又一次打开。因为PQ里的查询是并行的,你没办法控制哪个先哪个后,所以当它们抢着打开同一个源文件的时候就会出现错误,就会出现刷新失败,然后说不准什么时候就会告诉你原始的数据格式不对,反正最终结果就是刷新失败,但是当你再次刷新的时候又好了。

VBA这个东西在我听说有PQ和PP之前就已经存在。大家可以通过VBA的方式批量打开文件夹批量合并里面的文件,但问题是合并是合并了,但是却非常不智能,因为最简单的模式只能保证内容都给你贴上去了,但是对不对得上你自己碰运气。比如第一个表跟第二个表某些列的顺序是不一样的,结果你就会拼出个寂寞,但是PQ和PP就不会犯这种错误。因为他们有连接方式这种概念,同时,它们所处理的不是某个单元格,主要操作的是字段,又或者说是列。当然,如果你条件足够,可以精确到记录。我在python里,只要把从Excel读取到的数据赋予pandas,接下来你就可以用 dataframe的方式去处理那些东西。我个人觉得,只要格式化了,只要那个数据框架定下来了,SQL、PP、PQ、python这4个好像不太一样的东西都能干非常类似的活儿。

首先是Power Query版本,接着是Power Pivot版本,第三个是python版本,现在我做的是VBA+ADO+SQL的版本。SQL in Excel是一个非常屌丝的东西,相比于其它软件里面的SQL,Excel里可用的公式我个人觉得会让人非常抓狂,是阉割版的SQL。本来就很难找到一个标准的说法告诉人你SQL in Excel到底有什么可以怎么用,当你用其它方式套在Excel里发现用不了的时候,才知道原来根本不能这样。对我这个新手来说,我只是大概知道SQL可以这样,应该这么整,但是套了一个Excel的条件以后就变成了大概应该是这样的事情实际上不行。

一天到晚都在为代码纠结。反而让我日子过得很实在,虽然运动和打游戏的时间被严重侵占了。

2012-10
11

链接页上线

By xrspook @ 17:57:28 归类于: 烂日记

按照计划,今天我总算作出了这个——DESTINY IS REAL的链接页

就是一个直白的资料收集页面。直接采用“标题+空格+地址”的方式,我完全可以把地址都超链接到标题,但我宁愿用这种比较丑陋的方式。这么丑陋完全不是因为我懒,因为这样做其实和做超链接一般麻烦,甚至可以说更麻烦,而且会因为某些太长的标题或地址显得很不和谐,但这是最经典的,我不想复杂,技术含量是要有,但我不想通过这样体现出来。

另外一个改进是把DESTINY IS REAL的导航栏一律换为2个字的项目。这主要是考虑到位置不够,太长了真心弄不下,除非我分两行。现在全部都2个字了,划一靠谱。外国人看不懂,让他们猜去吧,其实,如果是懂规矩的,看看我的网址应该明白是怎么回事了。我不可能满足所有人的需求。

这么做出来我不是为了增加神马外链神马浏览量,那都是浮云。我只是为了很自私地方便自己,当我不使用自己电脑的时候也能轻松地访问我平时访问的资源。点点的网站之所以一直都保持活跃更新就是因为我一直像爬虫一样一直关注那些地方。我一直在做人肉网页爬虫,囧。

有时我会问自己,我为什么可以如此神经质地坚持,为什么人家的兴趣都是一波一波阶段性的,而我却可以一直处于高峰值的兴奋状态,这到底为什么?如果我还是个学生,估计我没办法保证这个,但现在,我却很幸运地可以一直都抽出这么多的时间,奇迹一般。

希望这种状态可以一直持续下去。

2011-01
19

Word中链接Excel单元格数据

By xrspook @ 17:54:42 归类于: 烂日记

每天都得努力,希望有所得,有时候即便很努力但仍没什么效果,那也没办法。今天我努力地computer了,也得到了我想要的,兴奋中。

上午用自写的油猴脚本实现了网址自动重定向,bye bye了,恼人的http://www.wwe.com/*

下午,完成了周赛统计报告的模板。模板?不是开玩笑吧,那东西有什么好兴奋的。大大兴奋的哦!由于是用Excel做的数据统计,通过筛选能把需要的数据都过滤出来,但过滤出来的版式始终不适合报告编写。直接贴过去的话是别扭的。所以,Word和Excel又得大大地联合了!怎么个联合法呢?

目标

我的目标是在Word文档的特定位置插入Excel某单元格数据,并实现自动更新(即当Excel某单元格数据发生变化时Word的copy数据也相应变化)。

实现方法

1、打开Word和Excel。
2、在Excel里选择*单元格,并Ctrl+C。
3、在Word文档的特定位置单击,插入光标,选择“菜单栏(F10)-编辑(E)-选择性粘贴-带格式文本(RTF)-确定”,此时,Excel数据带格式地插入了,数据右下方出现“粘贴板图标”,点击该图标并选择“匹配目标格式并链接到Excel(L)”。
4、保存,关闭Word并重新打开。有窗口弹出说“该文档包含引用其他文件的链接。确实要用链接文件中的数据更新该文档吗?”,确定。(每次打开都会有这个现象,确定就好)
5、测试:修改Excel中*单元格的数据,保存,打开Word,看看数据是否变化了,同时,格式应该依旧是Word设定的那种。
6、完成步骤5后,如果你的回答是YES,恭喜你,大功告成了!如果是NO,请重新检查并实施步骤1-5。

注:如果你交互的数据很多,导入时间会挺长的哦。

虽然,一开始做Word和Excel的联合,插入数据会很麻烦,超级郁闷,但以后就没有这等烦恼了!用一次麻烦换来以后的无限轻松,这笔帐,你懂的。

显然,我不是一开始就懂这些,不过后天的学习会让人无比强大。

大声吼一句“天份不是吹出来D”!

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress