2009-10-20 81 views
1

我想为非营利组织的Word邮件合并生成分项账单。Word中的分项账单

现在,源数据以每个客户每个物品类型的两个单元格(欠款和付款)为单元的透视表结构(这不是我的想法)存储在Excel中。 (每个客户有一行,每个项目类型有两列)。现有的数据是在这个结构中,但是如果有一种方法可以自动将它转换为更好的东西,我可以接受想法。

我目前有一个Word宏生成的Word邮件合并文档,它为每对列(项目类型)写入Word IF字段代码。 (并非所有的顾客都有所有的商品类型,所以我需要IF字段来排除每个顾客不欠的)。

问题是,只有我知道如何操作这个系统,并且我没有时间自己生成所有账单。

理想情况下,我会写我自己的结算应用程序(这也可以解决其他一些问题),但我没有时间去做。

有没有什么办法可以(合理快速)制作一个系统,让技术人员在没有我的情况下完成所有的计费?

我们研究过QuickBooks,但它无法导入现有的事务。

+0

我在SO上问这个问题,而不是SU,因为在这个级别上,Word字段代码成为一个(令人生气的限制)编程语言。我曾经(为了好玩)通过复制粘贴相同的字段多次来计算Word字段代码中的斐波那契数列。 – SLaks 2009-10-20 20:51:11

+0

如果这个问题不清楚,请让我澄清。另外,阅读我的答案,这可能有助于澄清。 – SLaks 2009-10-20 21:03:38

回答

1

这里是一个解决方案,我已经想到的:

Excel数据操纵成非枢转的形式与每个事务一个行(每件每个客户,或每对单元在当前的结构)。实际上,我已经在尝试将事务导入QuickBooks时失败了。

每一行会变成一个项目的议案(如反对当前,摆动,形式,其中每行变成一整页的大量项目)

然后,使Word合并文档,检查是否当前行是不同客户的第一行,如果是,则在两个(非常大的)IF字段代码中包括账单的全部文本(而不是项目)。

所有的行都会在帐单中生成一个项目。
每位客户的最后一行将跟随旧客户文本的后半部分(项目之后的部分)。
每位客户的第一行都会在新客户的文本的前半部分(项目之前的部分)之前。
两个IF是处理第一个和最后一个客户所必需的。

我必须在电子表格中添加一个公式列,告诉我是否插入前缀,后缀或两者,因为在Word中不可能这样做。 (你不能偷看下一条记录)

合并发生器仍然是一个复杂的怪物,但它永远不需要改变;新的项目类型将从源数据中提取。 (与当前合并生成器不同,每个新项目类型需要新的宏生成字段代码)。即使如此,如果文本发生变化,我可能会生成一个宏来生成它。 (在域代码中编辑文本非常烦人)。

0

Word和Excel都有内置的VBA,如果您使用这些,那么您对可以执行的操作没有限制。这种类型的应用程序确实应该由数据库(Access)驱动,该数据库可以生成分项账单,添加序言,并在分项后添加底部总计和杂项。但是,如果您需要坚持使用Excel数据,那么将Excel视为数据库,在Excel中编写您的VBA代码以生成账单,然后将Excel文档(VBA)组装到Word文档中,或者将其放置在Excel在一个工作表格式,只需要从Word模板琐碎的工作,以将其全部拉入。

+0

您的意思是在VBA中进行实际的邮件合并,而不是根本不使用字段?我没有想到这一点。如何获得帮助生成账单?访问报告不支持(AFAIK)支持富文本。 – SLaks 2009-10-20 21:19:35

+0

我对Access的参考是建议数据库应用程序比电子表格更适合存储和管理帐单详细信息。如果数据在数据库中,则可以在Word中有一些VBA查询数据库,获取数据并在Word文档中生成Richtext。但考虑到数据是在Excel中,并且可能不是这样一个简单的表格布局,最好将VBA放入Excel中。从技术上讲,你仍然可以使用Excel VBA来生成Word文档,但是如果OP更适合Word字段,最好不要咀嚼太多。 – 2009-10-20 23:41:08