Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 自动化excel过程--对多个文件应用宏_R_Excel_Vba_Automation - Fatal编程技术网

R 自动化excel过程--对多个文件应用宏

R 自动化excel过程--对多个文件应用宏,r,excel,vba,automation,R,Excel,Vba,Automation,我正在处理用于监控健康计划数据的文件,每种类型的报告都在同一个模板中。我创建了宏来自动监督文件(查找错误、数据缺口、逻辑不可能性等)。现在我已经准备好了,代码已经清理干净了——我正在尝试将这些宏的应用程序自动化到这些文件中。例如,对于一种类型的报告,我有10个客户端文件需要审阅。目前,我正在经历打开每个文件并放入宏、将其应用于文件、删除宏(以便客户端无法获取我的代码)以及保存生成的文件的艰苦过程。我对每个客户机重复这个过程,然后对许多其他报告执行类似的过程。我知道必须有一个更好的方法,我想知道是

我正在处理用于监控健康计划数据的文件,每种类型的报告都在同一个模板中。我创建了宏来自动监督文件(查找错误、数据缺口、逻辑不可能性等)。现在我已经准备好了,代码已经清理干净了——我正在尝试将这些宏的应用程序自动化到这些文件中。例如,对于一种类型的报告,我有10个客户端文件需要审阅。目前,我正在经历打开每个文件并放入宏、将其应用于文件、删除宏(以便客户端无法获取我的代码)以及保存生成的文件的艰苦过程。我对每个客户机重复这个过程,然后对许多其他报告执行类似的过程。我知道必须有一个更好的方法,我想知道是否有人在这个领域有经验,也许能为我指出如何实现它的方向。我将R studio用于我们自动化的另一个过程,我相信我也可以将其用于这个过程——只需要找到一个起点

审查宏的结果仍然需要手动干预,但我希望消除不必要的手动接触点


非常感谢您能分享的任何建议/知识

除非您编写的宏包含一些没有Python等价物的非常具体的函数,否则我建议您干脆放弃VBA,通过或在Python中操作Excel工作表。如果您的数据非常“类似于数据库”,最上面的一行只是列标题,而每一行只包含与这些标题对齐的数据,那么您也可以使用来处理数据

如果您确实需要访问直接内置到Excel中的那些没有Python等价物的函数,则可以使用通过Python与Excel通信。该库基本上通过其COM接口驱动Excel。然后,您可以直接使用COM库从Python中执行等效的VBA文件,或者如果您更喜欢使用VBA,只需将VBA代码粘贴到Python脚本中,并将其插入工作簿中,如中所示。从中,还可以从Excel工作表中删除VBA代码,如中所示

纯VB解决方案本质上涉及在Excel工作簿之外的环境中进行这些相同的调用,以插入并随后删除
CodeComponent


您可能会发现,使用流行的脚本语言(如Python)解决此类问题要容易得多,因为它周围的支持社区比VBA大得多。VBA往往是小型的,因此其支持社区也往往是小型的。大型支持社区还意味着维护良好且非常方便的库,如前面提到的
xlwings
openpyxl

听起来您应该查看附加项您可以使用Excel宏打开另一个Excel文件,操作数据,保存它,然后关闭文件。如果显示现有代码的示例,我确信所需的更改不是主要的:您只需要将代码指向ActiveWorkbook/ActiveSheet即可。@TimWilliams,我不确定我们是否在同一页上。我的代码当前指向活动工作表。我的问题是,我有10个不同的工作簿需要应用当前代码。假设这个报告叫做ERC,所以我有Client1ERC,Client2ERC。。。等等我希望能够应用所有十个文件的代码,而不必单独打开它们,输入代码,然后应用。这些都是月报,所以我现在每个月都会去做180多个文件的手工处理。我有大约15个宏,每个宏都适用于特定的报表类型。如果您的宏始终使用“ActiveSheet”(例如),则不清楚为什么需要将其复制到需要操作的工作簿中。这就是为什么我建议您发布一段具有代表性的代码,这样我们就可以看到您目前正在做什么。