2020-07
30

VBA批量打印凭证

By xrspook @ 9:44:34 归类于: 烂日记

昨天我打印了一大堆记账凭证面单。理论上我可以用邮件合并的那套表格去的,但实际上,我依然用的是单独一个Excel文件带控件的打印方式。需要打印的凭证面单有很多。估计超过10张。如果只是一两张,用控件的方式挺好,控件我设置为可以利用上下键,选上一张和下一张。也可以在输入函数的地方直接手动填写数字。只打印某一张或者某几张的情况下,这样做很方便。但当我要打印的东西是一大堆的时候显然这就不靠谱了,万一我手抖一抖,按两下,跳跃了呢?万一我按完,选择以后快速打印按钮按偏了呢?我根本不知道自己打印了多少张,中间有没有漏掉。邮件合并可以有选择范围,我可以选择某个范围内的记录,生成一个新的文件,然后直接打那个。如果我生成一堆工作表,我还得把它们删掉,新建一个文件,我还得删文件。与其这样,不如让机器去执行,我一边数据递增一边答应。人肉会按漏,但对机器来说太简单了。虽然这样不断提交打印,会比全部一起打印慢一点,但实际上,对我来说,一点影响都没有,因为我配套使用的是打印速度非常慢的针式打印机。如果我用的是激光打印机,而且还是非常快的那种,打印内容非常少的话。我这样的操作会影响打印速度,但现在,我做的做法非常简单且完美。之前我想不通,在Excel里要如何实现批量邮件合并的功。昨天,几乎可以说不费吹灰之力我就实现了,而我做的仅仅是写了一个几行字的宏而已,而具体某些步骤要怎么写代码可以先录制一个宏,看看参考一下。我最需要参考的是快速打印要怎么表达。因为VBA批量打印太方便,所以我通常都忘记先选择针式打印机。针式打印机不是我的默认打印机,所以按下批量打印以后,当我的激光打印机开始轰鸣,我才记起自己搞错了,所以我得迅雷不及掩耳地关掉激光打印机的电源,然后重新选择针式打印机。我觉得应该完善一下这个脚本,我应该把打印机也设置好,默认为针式打印机,这样我就不会有用错打印机的烦恼了。

这个脚本非常简单,前面的部分我已经写过了,用的是指定行打印的思路。首先输入两个数字,如果第2个数字留空,就默认等于第1个数字。如果第1个数字也空的话,打印不会执行。当第1个数字和第2个数字都靠谱了,会进入一个循环,步长为1。里面的语句超简单。说白了就是一个让某个单元格里的数字自增,然后快速打印该页面,因为这个页面我已经设置了打印区域,所以一切都很简单。之前我还在想,要做个控件,在Excel里面输入起始和结束页码,但实际上这根本没必要,直接弹窗挺方便。当然,就严谨性来说,我的脚本是有缺陷的,比如万一我输入的东西不是数字还是其他字符呢?万一我输入的数字不是整数,不是Excel表格里行数范围内的东西,而是一个浮点小数呢?我当然可以对输入进行严格的限制,限制它的范围,也限制它的数据类型,但这样显然就有点过了,毕竟这种打印完全是用来方便我自己的,没必要做到这么完美无缺。

现在,妈妈再也不用担心我会漏掉打印某些凭证面单了。

2019-09
10

Excel内部套打

By xrspook @ 11:03:09 归类于: 烂日记

我花了一个下午的时间,做了一件Excel内部套打,实际上这个功能很早以前我就已经可以用Word和Excel联合实现。出来的效果很完美,问题只是核心数据要贴在Excel,打开Word的时候,必须点一个对新手来说可能不知道该怎么办的窗口。如果那是一大堆的数据的话,这样的操作绝对值得,但如果那只是仅仅一两条数据,这样的操作貌似比较麻烦。所以昨天我就在Excel里面做了个模板,然后用定位的方式在文件内部实现套打。这样的好处是只需要打开一个文件,就能实现打印而且不会弹出一些让新手很困惑的窗口。很多函数都可以实现这个功能,但最终我选择的是一个定位函数,虽然那是一个动态函数。但因为我要实现的东西很简单,提取的东西不会超过10条结果,我需要进行筛选的总表里面也没有成千上万的东西需要纠结,所以我无需考虑运行效率这个问题。之所以选择INDIRECT这个函数,是因为参数比较少,而且在我定义函数的时候我可以轻松地借用到原数据的列标签,不需要思考一下我要怎么把那个转化为数字。

打印数据的控制可以通过手动输入,也可以通过我随手拉出来的一个控件。控件的好处是可以一个一个地向上增加或减少,这样漏掉的几率就会比较低。当然,如果要暴力一点的话,可以直接在单元格里面输入任何你想输入的东西。当然那样的话就得不到应该有的效果。在不用VBA的前提下,我觉得这样应该实现不了批量数据生成。如果我在现在这个东西的基础上再加一些VBA语句,应该可以实现批量打印,而且难度不算太大。这样的话我就可以用它完全取代Word和Excel黄金搭档的邮件合并功能。虽然我现在做出来的这个小表格很直白简单,用起来方便,但入门的门槛不低。纯粹只是套用,其实没什么难度,但要把整套东西设计出来,还是得花一定的时间。相对而言,相比之下,Word和Excel的邮件合并好用得多。之所以那么好用,是因为一些我需要在Excel里DIY控件实现的功能他们有内置的控件。之所以我想到要加一个控件控制单元格步长,就是受到他们的影响,当然我也可以设置直接跳转到第一条数据和最后一条数据。之所以想到这个也是因为我看到他们可以实现。要如何在Excel里实现批量打印,我想出来的方法不是在一个工作表里面生成一大堆表格,而是一个表格生成一个工作表。打印的时候,我可以筛选有特定字符的工作表批量打印。其实在Word里面也是这么控制的。我之所以想到要生成一大堆工作表是因为我不知道如何在一个工作表里面连续生成N个格式一样的表格,这些表格在打印的时候必须刚好1表1页。要控制好这个,Word里在表格的后面插一个分页符就好,但是Excel里面貌似没有这个东西。当然如果我把表格的高度刚好就是一页纸的话,就应该能达到我想要的效果,但这该如何做到呢?暂时我还没想通。

一个下午就只干一件事,貌似工作效率有点低,但起码我做成了这件事。接下来我将继续在这个问题上动动脑筋研究出我想要的效果。

2017-08
31

需要学习

By xrspook @ 9:35:50 归类于: 烂日记

一下子摊开很多东西,但全部都不能完结,都撂在那里,这种状态实在让人很无语,尤其是遇到我这种单核操作的人,觉得这样我会折腾不过来。每天都只做一点点,其实没有问题,但是所有东西都处在一个未完结的状态,所以其中一些细节到很久很久以后可能就会忘掉了。这样就非常容易出乱子。我已经不记得十年前的装粮压仓到底是怎么回事了。在我印象之中,那次没有装一大半不装满好像没持续多长时间。因为当时根本就没有那么多仓允许我们在那里等。现在我也不知道那个仓快装满但又不满的状态要维持多长时间。我觉得现在这样的坏处是,到最后完结的时,可能数据调来调去很麻烦。因为一开始的时候同时进的那些仓和最终补进去的那些非常有可能不一致。这种麻烦是人为造成的,如果那不是一个新仓,那是一个旧仓就不存在这种装得差不多然后停在那里,又换另外一个仓装粮这种事。当然也不会遇到后续的麻烦。我觉得这样是在折腾我,但实际上,没有更好的解决办法。

高中的时候曾经学Access,但后来一直没有用过。那个算是Office2003的软件里我用得最少的一个,准确来说是碰都没有碰过,因为高中学的时候用的是Office2000。15年前的事,当然已经不记得该怎么折腾了,而且学校学到的东西通常都只是皮毛。那到底在实际操作中好不好用很难说。昨天就要用到Access做一些固定数据的查询。折腾了一番,我的同事终于整出来了,他也不熟悉那个软件,因为他平时开发的并不是那种数据库。其实Access除了查询以外,还可以把数据按照固定的格式打印出来,但是那个报表设置界面实在让我觉得无所适从。工具箱有一堆东西,但是貌似,都不是我想要的,我想要的东西到底在哪里?不知道.理论上应该有。所以为了免去马上学习的时间,我又开启了Word的邮件合并。邮件合并把数据传过去非常简单,但问题是后续的格式调整需要一定时间。比如表格的间距、页边距,还要设定引用数据的格式,但这些都不是问题,完成只是个时间问题。打开Word和打开Access,最终打印不过是界面不同而已。如果打印功能放在Access会让人觉得比较统一,但实际上,打印数据根本不需要开Access,直接打开Word选择需要的就可以了。Word的坏处是除了那一条数据以外,你不能看到数据的整体情况。当然也有其它方式把数据全部都展示出来,但又何必这么折腾呢?而Access不同,你可以进去查看详细数据,你也可以查看具体某一条数据。所以非常有可能今天我要学习一下该怎么在Access里设计固定格式的报表。学习是要花时间的,但是这个时间我必须得花。而且我对学习这个也挺期待的,毕竟这种事,不是用一天两天,可能往后每一天都会遇到。一开始的时候当然得选择一套简便的方案让别人可执行。数据抄来抄去容易出错,如果数据全部都是自动生成。就不存在人为出错的问题。自动生成一定程度,你可以说是因为我懒,但实际上如果这种懒可以让工作更顺畅,为什么不这么干呢?

马上就是月末了,明天就要把所有报表都报出去,所以今天我要做好最后的准备。

归档:2017-08-31 见面

2014-05
30

懒人自有天相

By xrspook @ 15:12:06 归类于: 烂日记

大日子就预示着你要为之付出很多,这几乎都已经能成为了潜规则。比如说昨天是橡皮章开玩一周年,无论是图片还是文字我都要比平时多做多写很多很多,多到超乎我的能力范围,hold不住的水平,继而发生的是很多东西都超时了,为了完成昨天的橡皮章和blog我不得不晚睡觉+早起来。一切都是值得的,呵呵呵,其实这句话属于自我安慰。但如果在某些很重要的日子你都舍不得花时间的话,我真的不觉得你会愿意在平时花很多很多在那个橡皮章的习惯上。

我是个很懒很懒的人,但我是个理工科生,在我的脑子里逻辑比神马都重要。我一直打算把所有橡皮章都理出一个表格,记录齐全橡皮章的编号、制作日期、名称以及我写相关blog的网址。因为不是一开始就做,所以做这个挺耗时间的说,于是,我也就一直都没有做了。一直没有做,一直在拖,直到昨晚,我终于认真地把盖印过我全部橡皮章的小册子拿出来,一个个电子化文字录入,录入完毕并检查后已经晚上11点了好吗,然后今天早上我再在blog里把逐个橡皮章的文章链接全部挖出来。我不是要炫耀什么,我觉得这是我应该做的。好了,每个章子300*300px的图都有了,在PS里已经组成了方阵。Excel表格里我需要的文字信息也都齐全了,我需要的是让它们以我想要的方式输出——该超链接的地方乖乖地给我全部自动超链接!

囧。WordPress从前不是有富文本的编辑模式么?为啥现在没有了?!!!!同样的事件发生在BlogBus,点点,MarkdownPad,163邮箱,Gmail邮箱的撰写区。这摆明很容易实现的东西现在居然没一个可做到?从前我还没开始纯代码编写的时候我一直那么干的啊啊啊啊啊!我一共有94套橡皮章(10套送人的,84套自己有编号的),其中有3套送人的没有在blog的日志里提及贴图过。烦了,难道我要手动复制粘贴91个超链接?!!!!!我试图搜索一下网上现有的编辑器,但貌似很无能。难道我要为自己写一个php?写php不难,但这貌似是杀鸡用牛刀的事。我试图在Excel里引用串联起单元格的内容,无能。最后当我死心塌地在WordPress复制粘贴了3条超链接后我脑子里蹦出了Word+Excel的邮件合并!这货最适合就做这种事啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!邮件合并的使用我是各种得心应手了。邮件合并理所当然是我在Excel里有完整数据而我需要把数据换个模式规范输出的最佳解决办法。不出5分钟,我把我烦恼了起码15分钟,如果“很勤快”需要起码15分钟才能未必万无一失做到的事办妥了~ 我很懒,所以我宁愿在想方法上多费时间也不愿意把无谓的精力耗费在非常有可能出错的重复性条件反射劳动上。综上所述,貌似我应该去德国,他们的思维方式方式实在和我太相像了。

完成明天的18K以后,我5月份的跑量就将突破200K,前提是明天我健康完整地跑完了,且手机没问题,Nike+也没有歇菜,不过即便歇菜了,18K就是18K,我跑完了平时我跑的那个路程毋庸置疑就应该是18K,即便因为什么原因我的数据没有被智能仪器记录下来。200K,多么高大上的一个数字,那将是我开玩Nike+以来最华丽的数字,即便在一开始快走&快走+慢跑的时候我都从未做到过如此金光闪的成绩,而现在我单纯用跑步做到,而且是在初夏做到,在跟高温高湿周旋在跟下雨奋进中做到,哪怕这或许就是我的顶峰了,下个月我的跑量又会掉落回来,这又有什么所谓呢,做到过就是光荣的。

还有不到一小时我将踏上回家的征程。

2010-09
26

再遇邮件合并数字问题

By xrspook @ 17:59:46 归类于: 烂日记

让人抓狂的网速持续着,不明白为什么大家都爱用流氓雷和暴风狂魔。很怀念从前干净快车的日子,没有闪来闪去的广告,也没有弹出小浏览窗口。到底那个窗口是谁的主意呢!QQ如此,旺旺如此,飞信如此,流氓雷,***也如此……只能叹一句,这社会再也没有干净和纯粹了。

今天继续折腾邮件合并,这次用在它最闪亮亮的地方——打印工资条。

又是那个该死的小数点问题,发现邮件合并的Word和Excel真是水火不容,即便在Excel里是整数,Word也会弄个14位小数麻烦你。到底为什么会这样呢?云里雾里。发觉之前记录的解决方法还不够仔细,所以,遇到邮件合并小数问题,应该这样弄:

1、鼠标移至插入域字符间,右键,下拉菜单选择“切换域代码”

2、MERGEFIELD “***”后加上“\#0.00”,“\#0.00”表示数字形式设定为2为小数,如果要保留整数,“\#0”就好。例:完整域代码从{MERGEFIELD “合计”}变成{MERGEFIELD “合计” \#0.00}

3、修改完毕后F9,更新域代码并退出域代码模式,返回数字。很多时候我们修改对了却没有更新,所以显示的仍是错误的N位小数

完成了!

很多时候,我们第一是忘记域代码该怎么写,第二没有按F9,抓破头仍得不到目标效果。

很多地方都说了遇到邮件合并数字问题该怎么解决,但却好像没多少人解释为什么会这样,如果只是小数出现,那还说得过去,因为Excel并非所见即所得,很多时候,你看到的那个数字经过四舍五入,但实际上Excel运算的仍是14位小数,所以,神奇效果可想而知,但连整数都会出现这等问题,那可真的让人很无语。难道Word理解那个单元格的内容并非数字而是把它当作日期、时间等其它信息?为了确保邮件合并后数字的正确显示,还是老老实实地把所有数字域都加入控制手柄,使之在可控范围才算万事大吉。

为什么没有Excel对Excel的邮件合并呢?

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