2019-05
16

自适应打印格式VBA

By xrspook @ 11:33:48 归类于: 烂日记

昨天我只用了一个下午就折腾出了某个专门自动调节打印格式的VBA。相比于之前的尝试,这个算是比较快速了,而之所以可以这样,是因为之前我已经积累了一定的经验。昨天的快速是之前的龟速累加出来的结果。如果倒过来一开始我先做这个,然后再做那些的话,估计在这个上面我要耗很长时间。

这一次我并不需要对数据进行处理,我只需要改变格式。工作表的格式有些是直接可以看到的,比如说行高及列宽,而有些格式必须到打印界面才能体现的出来,比如说打印页边距、单色打印以及页脚。控制某个格式具体要用什么语句我不知道,如果我直接去查的话,估计要一段时间,所以我先录制了一个宏,然后从里面发掘一些我需要的东西。人肉定制和软件录制的区别在于机器录制里面有一大堆我根本用不着的语句,那些东西我不需要控制,所以如果人肉编写的话,它们可以全部都不存在。因为Office软件是外国人开发出来的,所以即便表面上看已经进行了汉化处理,但实际上代码层面他们依旧用的是外国人的思维。比如说打印设置里面的页边距,虽然在软件里我们看到的默认单位是厘米,但实际上看代码的时候他们居然把我们设置的厘米转换成了英寸,而且还保留了很长很长的小数位,估计是能保留多少个小数位就保留了多少个。这种逆天的操作只存在于录制代码的时候机器自动生成,如果是我们人肉操作,我们不可能写成英寸以及保留一大串的小数点数据。

昨天的那个VBA我首先是自己写了一些我力所能及的东西,接着是用机器录制了一段代码作参考,然后实行拿来主义,抄写过去。当我把东西合并起来以后,发现了一个奇怪的现象,本来我的代码针对的是工作簿里面所有工作表,但实际上有些工作表起作用了,但有些工作表却没有。在这个工作表里调用代码,但这个工作表有问题,其它的却没有。后来我才发现这是因为我把自己写的代码跟系统自动录制生成的合并起来了,但我没有在自动生成的代码里在人工加入某些语句,导致虽然在循环之中,但在执行某些代码的时候指代不明,于是就发生了一些我意想之外的事情。系统生成的代码几乎可以这么说,那不可以用于一个工作簿里面的所有工作表,从代码的构成就决定了这一点,而且相对于人肉写的代码,机器生成的代码有很多废话。但即便这样,机器代码还是非常值得人去学习,因为那就是机器的思考模式。

昨天的VBA耗费我最多时间的是在控制列宽上面。有些列是没有数据的,所以那些的列宽可以小一点,但是不能太小。因为太小的话表头的字即便进行了自动换行,还是有可能显示不全,因为那个表格在某些地方进行了单元格合并。如果遇到某一行,发生了这种事。。即便你使用了自动换行,也未必能达到你想要的效果。所以我的程序必须设定为在一定区域范围内有数据的单元格所对应的列使用自适应的列宽而其它列则使用固定列宽。自适应的列宽如果小于某个数值,也让它等于固定列宽。之所以要写这个VBA,是因为原始导出的表格列宽太大了,即便用A3纸打印上面的东西也很小看不清,更何况我要把它打印在A4纸上面。所以尽可能地缩小列宽是我写这个VBA的主要目的。

过去接近两年,我都以人肉的方式调整表格的格式使之尽可能地放大到A4纸上。现在借着VBA代码的东风,我终于忍无可忍,实现成功升级换代。

PS:有视频有真相!一开始我用手机录显示器,但摩尔纹简直让人崩溃。于是我就去找PC录屏软件,但要安装要注册要破解有病毒,最后,我用的是PowerPoint里的录制功能,真的很好很强大~这是我装了Office 365之后第一次用PowerPoint,实在太爽了!

2019-04
12

让页面方向重回不智能

By xrspook @ 10:39:15 归类于: 烂日记

我已经很久都不写教程这个东西,因为好长一段时间我都没有试过有那种非得我这样做不可能念头了。过去了很多年都只是我在找别人的教程帮我解决问题。还记得刚开始上网的那个时候,我写过不少教程,直到大学毕业之前,我也喜欢写教程。哪怕是一些很琐碎的事我也会写,首先是因为这样做可以让自己加深记忆,当自己以后再遇到这个问题的时候就可以及时找到恰当的方法。这除了可以帮助我自己以外,也能帮助别人。既然别人的教程帮了我很大忙,我希望我也可以为别人做同样的事。之所以慢慢地我不做这种事了,是因为我仿佛陷入了泥潭,觉得教程必须写得图文并茂,而且有一定的意义。这样的压力实在太大,而且我也没在那个上面放那么多的时间和精力,于是我就没干了。

但是昨天我又写了一个教程,其实也说不上是一个教程,但是是类似的东西,那是完全通过我自己的经验总结出来的。在我能搜索到的范围之内,我没有见过有中文的类似的东西。至于英文的版本,也是在我把自己的方法写出来以后,努力折腾才看到了别人曾经也提出了类似的方法。除了我们的解决方案以外,其它的都不怎么可执行,又或者说必须依靠软件升级的支持才能做到,这显然不现实,因为不是每个打印机制造商都意识到这个问题,而且愿意给用户开辟一个通道免去用户的这种烦恼。

Excel里面数据透视表绝对引用和相对引用的问题从2013版开始存在,到2016版刚出现的时候问题依旧。2016版更新到某个版本以后这个问题才算解决了,所以在2019和Office365里面数据透视表的绝对引用相对引用不再是个问题。但是这两天我遇到的那个自定义页面大小以及页面方向的问题却从2007版开始一直延续到现在到Office 365,仍然没有确切的解决方案,也正是因为这样,所以我得自己纠结一个方法出来。这是个横跨了12年的问题而之所以这么久都没有解决,首先是因为他们觉得这不是问题,这是方便、这是智能化。之所以有这个问题,也正是因为他们觉得应该给用户一个智能的判断,但却没有考虑到原来有那么一些小众用户需要用这个不智能的方式。其实这种事很普遍,尤其是对滚动式进纸的针式打印机。只要进行连续多联的打印必然会遇到这种问题。遭殃的有提货单、收据、发票,各种快递单等等。只要打印的这些东西用的不是系统,而是用Office的邮件合并进行套打必然会遇到这个问题。之所以这个问题一直都不被重视,大概是因为需要这样用的人可能非常少。对于数据量处理非常大的企业来说,他们肯定愿意给钱去搞系统,而对于数据量不怎么大的小单位小作坊,或许他们的知识层面还没到那种去研究怎么可以让工作更便捷、怎么去提高自己的工作能力,比如说学习使用Office的一些比较冷门的功能。但偏偏有我这种早已把这个功能当做是我随身工具包的人。对我来说要么避开这个问题,要不么直接面对找出解决办法,否则我只能在电脑上让2003和365并存。

2007有这个问题,到Office 365(2019年4月)仍然有这个问题,简直让人无比醉!!!2003可以设置宽大于高,且打印方向为纵向,同样是宽大于高,365无论你怎么设置,只要按确定以后必然会自动把你的打印方向默认为横向。对于针式打印机,尤其使用滚动进纸模式连续套打多张的时候,打印方向必须选择纵向(比如EPSON的LQ-635K),无论你怎么折腾纸张尺寸和打印方向,365都无法实现2003能做到的正常效果。于是呢,我做了以下的事:

把2003的doc和365的docx改后缀为zip,解压对比里面的文件后发现,在“根目录\word”下有个document.xml文件。文件末端,365生成的文件比2003的多了个“w:orient=”landscape””,有这条,打印方向就是横向,没有就是纵向。把这一条手动删除并保存后,把解压包里的文件重新压成zip并重命名为docx,365的文件终于能实现2003文件的纸张宽度大于高度,但打印方向为纵向,滚动试进纸的打印机得救了!但这里有一点非常重要:手动删除“w:orient=”landscape””以后就不要再到Word的“页面设置”里修改任何参数,只要一修改一按确认,365的“w:orient=”landscape””又会重新自动生成。如果要对“页面设置”的参数进行调整,比如纸张选择、页边距设置等等,一律要在手动删除“w:orient=”landscape””之前。

折腾一大轮才让365实现2003不费吹灰之力就能做到的事,让人心累,还不如同时装个2003和365呢~~~ 插一句,新版本的WPS,比如WPS 2019同样存在365的bug。

当别人不曾试过努力思考就用询问他人的方式找答案的时候,我很瞧不起他们。因为我自己是那种非常喜欢通过自己的琢磨努力得出一个方法的人。研究出解决某个问题的第一个靠谱方法对我来说很有成就感,帮助自己同时也方便别人的感觉很爽。

2018-12
26

Office 365使用感想

By xrspook @ 19:42:45 归类于: 烂日记

昨天我觉得自己忙得死去活来的东西总算告一段落,到下午4点多的时候,我终于觉得我可以缓一口气。接下来的事情就不是干,而是等时间到,等数据全部出来,然后我就可以把东西做好,这个2018年的工作就算结束了。

最后做的是国粮局网上直报系统的统计分析,实际上我没做什么,只是把去年的东西改了一下,图表全部从2003格式改为365。在经历过上个周末在家里改格式以后,整个操作相对而言我已经有点头绪,总算在365里我能找到应该找到的功能,虽然有一些我还是不知道往哪里找,所以每到那个时候还是要度娘一下。有时我会觉得应该就在那里,但一眼望过去,无论如何如何都找不到,经过几次后我发现,那是因为那些功能被折叠到了一个按钮里,但那个东西又不会让你产生任何的联想,觉得所有功能都在那里。我觉得这是2003跟365的主要区别,或许设计师觉得用图标反映东西会直观一点,图案大一点你就不容易按错,会比从前的文字好很多,但是对同一个图标,有人是这么理解的,但有人却不那么觉得。我就是那种不那么觉得的人。以前在2003里,在一串小图标里找不到,我还可以在文字的菜单里找,相对于找图标,我觉得找文字会快一点,因为不容易误解,但是在这个365里面,你很难找到指引的文字,除非有些东西他们觉得无论如何都没办法用图标表示,于是有时你会非常的抓狂。我不知道为什么他们要这么干,或许他们觉得这么干以后,软件就不需要翻译了。你使用这个软件的时候需要学会一套图理解的操作本领,而不是通过你的母语。

之所以买365,其中一个很重要的原因是一些高级的数据模块里,2016的操作窗口,居然是一半中文一半英文,另外一些是图标。这把人整得很惨。如果那全部是英文,那我就用英文的思维去考虑,但是里面又有中文,但你从中文里都找不到你要找的功能,于是你就得去看英文,反反复复来回转换实在累人。真不知道,那些开发者是怎么想。如果他们不想让2016拥有这个功能,直接跳出来的窗口全是英文就得了,但是一半中文一半英文,绝对是把人逼死。我又明明知道那个界面是有完全中文版的,既然2016的家庭版或学生版没有,那么就一定在365里面,因为365是所有功能都具备的全家桶。365的家庭版和学生版跟商业版比起来,不过是少了一些只有在团队操作才用得上的功能。如果2016的专业版里才有全中文界面,365肯定是包含的。当我入手了365以后,事实证明的确如此。

现在让我有点困惑的是,要不要把笔记本的2016也升级为365。安装使用肯定没有问题,但是365是有使用年限的,但我的2016却是永久免费。重新安装365当然没有问题,但如果我想换回2016呢?要怎么操作呢?的确,我的微软账号上有这两个软件的使用权,但貌似我没有找到该从哪里可以找回2016的密钥。我也不知道如果365不想再订阅了,该去哪里下载2016的电子版.理论上,当我安装好Office以后,登录我的账号,自动就会跟我已经购买的使用权对上号,但如果我有两个使用权呢?该如何确定是哪一个呢?如果还能倒回去,我完全可以把笔记本的2016换成365,但如果这个步骤不可逆,大概我就不能冒这个险了。起码这能保证在我不给钱的时候,我还有可用的软件可以顶一段时间。

一直以来,我都是微软Office的粉丝,WPS对我来说只是一个走投无路时的替补是用来凑一下数的。

2018-12
18

初试365的打印功能

By xrspook @ 9:22:30 归类于: 烂日记

昨天我没有去追星而是把所有时间都用在工作上了,一整个下午我都在打印账本。那个操作真的非常累人,但实际上,如果我按普通人的思路,那不过是签名盖章的事而已,但我却在不断地放纸不断地调格式,再不断地放纸调格式……我甚至不知道自己往返了多少次打印机,因为一次就只放一张或几张纸而已。为什么那些东西必须得手工签名?为什么那些东西给别人检查的时候不能用电子版而必须打印出来?为什么我们单位不购买统计模块的金蝶系统?的确,我的工作很痛苦,因为所有东西都得手工完成,无论是格式上的东西还是数据上的东西,只要出错都是我的责任,但明明那个东西是可以通过程序避免错误。

昨天把一大堆账本搬出来的时候我实在觉得很头晕,想想要把里面的每一页纸都加几行打印,想死的心都有了。昨天的大部分账本我都是用调格式加几行的打印方式,而且这是我第一次用Office 365完成这个操作,一开始的时候很不习惯,有些东西甚至找不到,但熟悉了以后还好。365和2003,我觉得最大的区别在于2003很多东西可以用右键实现,某些功能是弹一个窗口出来,里面就集成了所有东西,但是365的一半以上这些命令都嵌入到了软件框架里头。这种设计风格大概从2007开始就已经这样,不过一些打印设置方面的东西他们还是用传统的弹窗风格,因为内容太多,如果要在默认框架里展现,估计半个屏幕都被占掉了,与其这样,不如直接弹窗。昨天我发现一个让我很惊讶的事,在打印预览页面,有些文字展现不出来,但是打印的时候却没事,有些边框打印预览的时候没问题,打印出来的东西却少了一条线。如果说那个边框已经超出了打印区域的话,为什么预览的时候或者按打印的时候不提醒我呢?我还记得2003在做邮件合并套打的时候,如果某些设置不到位,就会弹窗告诉我超出打印范围。每一次打印那个东西你都得按确认键,显然这非常的麻烦。当时我耗了不少时间去研究各种参数,但最后还是没搞懂为什么会那样,所以搞到一个不被弹窗的版本就赶紧存下来。理论上打印预览是所见即所得,但为什么365不这样呢?还是说,之所以发生这种状况,是因为我打印的那个是一个2003的格式。如果把它变成高级版本的,可能就不会有这种问题。我的所有文件90%以上都是老版本2003的东西,显然要一下子把那些都换过来非常不现实,而且现在也年末了,不应该做这种调动。明年开始我会把所有东西都换个版本,这样的好处是文件的体积缩小了,至少可以缩一半。如果用二进制的工作不更加可以把体积缩成原来的1/5。更小的文件意味着更快的打开速度和存储速度,而且虽然文件体积变小了,但实际上里面的功能会更加丰富。之前我曾经遇到过明明说2016里有旭日图和树状图,但因为我打开的那个文件是2003版本,所以根本没有那种图表可以选择,当我把文件另存为2007版本的时候,一切都好了。

熟悉365需要一段时间,但对我来说,我不仅要熟悉,而且要玩好它。

2018-12
15

入坑Office 365

By xrspook @ 20:42:13 归类于: 烂日记

昨天早上起来,突然间我就做了这么个决定,在吃早餐之前就自费去买个Office 365个人版。我选择的是在微软的官方商城购买而不是他们的天猫店,因为他们的官方商城可以选择免费赠送一年的是哪个视频网站,但天猫店貌似只能固定一种。最终有没有得赠送很难说因为双十二开卖的东西,只有3000个名额,而我又过了很久才去凑热闹,不过没有也没有关系,因为我要的只是那个服务本身想都没想过要拿到额外的福利。

我之所以最终决定要买个人版的原因是前一天晚上我咨询了微软商城的官方客服。他们的个人版或者家庭版的介绍页面说可以安装多台电脑,但是到底是多少台呢?他们的确切回复是可以无数台,但同时在线的设备数目限制,最多只能是五台设备同时在线。以个人版来说,就是同时可以让五台设备登陆同一个账号使用软件。因为家庭版可以允许有六个用户,所以同时在线的人数也就是30人。这样的算法肯定是不合理的,因为他们就没想过你们真的要给30个人去用他们498块钱的软件。问完当时到底可以安装多少台电脑以后,我问了他们的客服能不能购买家庭版但是给我开单位抬头的发票。对方的回答是,发票可以开,但是我这样的用途是什么?看到那个问题以后,我不知道该如何回复,因为如果要买家庭版,肯定我考虑的是单位里可以有六个人的六个账号同时使用。之所以要开单位抬头的发票,毋庸置疑那肯定是为了报销,如果是个人使用,发票没有意义,因为那个东西是一旦发货就不会退货的。这样会落入另外一个陷阱,因为软件说好是不能进行商用的,个人版和家庭版都有这样的限制,如果要商用,他们有商业版,但是,相对于个人版和家庭版来说,商业版的费用很高,最便宜的那个套餐也要30多块钱每人每月,而且软件不安装在电脑上,只能用网页版。商业安装版的最低价格是50多块钱,高级的是70多块钱,这些都是按月算的按人算的。以60块钱每人每月一年下来,一个人也要720块钱,这是个人版的两倍价格了,唯一的好处是多了一些视频会议之类的应用,但是如果商业版只支付一个人,这些毫无意义,因为一个人根本不需要什么视频会议。有些东西的商业版,比如坚果云的,他们会限定一个人一个月多少钱,但是最低消费是五人。所以我回答那个客服的是单位里我的电脑以及家里我和我家人的电脑使用Office 365家庭版。在我回答这个问题的时候,我想到的是现在买的无论是台式机还是笔记本的品牌电脑,都会预装正版的Windows以及Office系统,当然Office安装的不是365,而是买断使用权的2016。无论是Windows系统还是Office系统,品牌电脑用的都是个人家庭版,但显然,在公司建立的时候购买的那一批电脑都是商用的,但是普通购进的电脑预装的软件都是个人家庭版,这又怎么算呢?不能用于商用这个设定我个人觉得有点矛盾。如果要别人花更多的钱,你必定得有更多吸引人的项目,但从软件使用的层面说,个人版已经能满足所有要求,何必用高级的商业版呢?他们不想让普通用户钻空子,但是他们却没有在服务上下大功夫。

然后呢,我在单位的电脑上和我家里的电脑上用了上了Office 365,相比于正版的Office 2016,365在功能上又上了一个新台阶啊啊啊!!!

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