Tag: vba

Excel.Application复制工作表与embedded式图表

我有一个PHP页面使用Excel.Application复制包含一些数据和embedded图表的工作表。 代码是这样的: $Excel=new COM("Excel.application"); $workbook=$Excel->Workbooks->Open($fileName); //alternative 1 $workbook->Worksheets("Sheet1")->Copy(NULL,$workbook->Worksheets("Sheet2")); //alternative 2 $added=$workbook->Worksheets->Add(); $added->Name=$destName; $workbook->Worksheets($sourceName)->Range("A1:Z100")->Copy($added->Range("A1")); $workbook->SaveAs($fileNameDest); 结果是数据和公式被正确复制和格式化,但sheet1中的图表不复制在sheet2中。 没有错误,没有例外,但也没有图表代码的替代品。 任何人都可以帮我复制这张纸…完全? 谢谢!

如何恢复VBA编辑器到其初始设置?

如何将VBA编辑器恢复到其初始设置? 我有一些麻烦与macros和项目资源pipe理器窗口设置,经过一些糟糕的操作。

Excel XML数据馈送使行数据不在行

我有一个XML Feed,它将按照字母顺序sorting的电子邮件地址列表绘制到Sheet 1中 在工作表2中,我有列1中的电子邮件地址列表,然后列出其他几列包含用户信息的列。 当我刷新数据,并且一个新的电子邮件被添加到列表中时,列1中的电子邮件地址列表向下移动,因此其他列中的数据不在同一行中。 是否有反正我可以插入一个新的行,并将所有的列中的所有数据向下移动,如果当一个新的地址被添加到列1中。同样,如果电子邮件从饲料中删除,删除一行数据。 我知道这实际上是在数据库中,但我没有这个选项。 提前致谢!

关于数据透视表的报告 – 获取切片器,图表和filter的信息

我正在处理大量的数据透视表,数据透视图,切片器和filter的大型报告系统。 所以为了确保所有的数据透视表都有正确的来源以及哪些切片器适用于每一个切片 ,我开始研究一个代码,为每个数据透视表汇总有用的信息: Sub Test_2_Pt_Report_by_sheet() ThisWorkbook.Save Application.ScreenUpdating = False Dim pT As PivotTable, _ Sl As Slicer, _ RWs As Worksheet, _ Ws As Worksheet, _ pF As PivotFilter, _ pFL As PivotField, _ HeaDers As String, _ TpStr As String, _ Sp() As String, _ A() ReDim A(20, 0) Set RWs = ThisWorkbook.Sheets("PT_Report") HeaDers […]

安全的Excel工作簿(与VBA)从不同的数据重用

我已经为客户创build了一个包含大量VBA代码的Excel工作簿。 客户将向我提供数据。 我将把这些数据导入到VBA载入的模板中,将其保存为xlsm,并将其交付给客户。 我通过工作簿获得付款,所以我需要阻止他们尝试将新数据复制到现有工作簿并重新使用它。 如何防止客户重复使用工作簿,方法是在主工作表上input新数据,然后保存为新工作簿 ,并免费使用VBA代码。 (或者,他们可以在Windows中复制文件,然后在复制的版本上input新的数据。) 我需要检测初始导入数据中数据的显着变化。 主表上的数据是相当静态的(甚至在许多已知的列上甚至是完全静态的)。 我正在考虑随机抽样一些导入的单元格数据(可能是10个随机单元格或行数等),并将这些数据存储在某个地方 。 比方说,如果有50%的单元格改变了数据,我只能禁用(或短路)代码中的公共入口点…或其他东西? 我想允许客户有一定的灵活性,但是要防止滥用。 上面有更好的办法吗? 我可以在哪里存储这些数据(它应该是表格的一部分,但不能由客户更改)。 也许隐藏工作表与密码locking单元格? 有没有一些可以接受的做法,我不知道?

从Web服务导入CSV数据到Excel

我写了一个简单的Web服务,返回大量的CSV数据。 我将使用Excel的“Data From Web”函数以表格forms将其导入到Excel中。 有没有办法让Excel自动分析作为导入操作的一部分返回到单个列中的csv字段? 目前我唯一的方法是先将数据导入到一个列中,然后编写VBA代码来select数据并使用TextToColumns对其进行TextToColumns 。 这感觉凌乱/容易出错。 我的另一种select是修改Web服务器以HTMLforms提供数据。 不过,我不愿意这样做,因为在每个csv字段周围添加标签会极大地影响返回的数据量。

如何访问Excel VBA中的联系人组?

我正在构build一个Excel加载项,它将活动工作簿作为Outlook电子邮件模板中的附件发送到特定的联系人组。 我已经得到了前两部分使用下面的代码,但我不知道如何将.TO字段设置为联系人组。 Public Sub Mail_Reports() Dim rng As Range Dim OutApp As Object Dim OutMail As Object With Application .EnableEvents = False .ScreenUpdating = False End With On Error Resume Next Set OutApp = CreateObject("Outlook.Application") 'Set this line to the path and file name of your template Set OutMail = OutApp.CreateItemFromTemplate("C:\Users\moses\AppData\Roaming\Microsoft\Templates\test.oft") On Error Resume Next […]

Excel VBA项目已生成多个工作簿对象

我负责一个非常大的Excel 2010电子表格,其中包含各种外部数据源(包括Bloomberg,65个工作表,vba模块和其他vba加载项的参考)的链接。 我注意到VBA项目已经获得了多个工作簿对象。 有标准的ThisWorkbook。 但是,许多工作表也被Excel转换成Workbook对象,将原始工作表保留为前一个工作表的副本,减去代码。 这似乎不是任何人的行为的结果。 的确,我不认为有多个Workbook对象是可能的! 例如,我有一个名为wksInputs的工作表,现在已经变成一个Workbook对象,而原来的wksInputs现在被称为wksInputs1。 我无法删除wksInputs Workbook对象。 请有人帮忙解释一下这里发生了什么,以及我怎么能解决这个问题…? 非常感谢。

使用VBA插入图像并将其保存在文件中 – Excel 2013

我正在为我的一个朋友工作,他需要在Excel文档中导入一组图像,然后在其他计算机上使用此文档。 我遇到的问题是,当在另一台计算机上打开这个文档时,所有的图像都消失了,而你得到了这些小小的错误信号,表明图像path找不到。 我已经开发了我自己的电脑上的macros,我有Excel 2007和我,代码工作得很好。 我的朋友使用Excel 2013,显然,这两个版本如何处理图像导入和保存似乎有一个主要的区别。 总的来说,我发现了2种不同的方式来插入图像。 我尝试的第一个类似于这样的东西: Set pic = ActiveSheet.Pictures.Insert("C:\documents\somepicture.jpg") 第二种方法是这样的: Set pic = Application.ActiveSheet.Shapes.AddPicture("C:\documents\somepicture.jpg", False, True, 1, 1, 1, 1) 在第二种方法的文档中说第三个参数(这里是True)负责保存图片和文档。 但是,这两种方法在最终结果上看起来差不多:它们对我来说工作得很好,但如果在Excel 2013的朋友计算机上执行它们,将无法正常工作。所以我需要的是针对较新的Excel版本(我从Excel 2010中读取的地方,有这样的图像导入方法的错误或类似的东西)。

迟绑定一个数组

我很难过 ,因为我无法find任何关于在VBA中绑定数组的问题。 这甚至有可能吗? 如果是的话,怎么样? 如果不是 – 为什么? 注意:我不介意使用像.Net / C#这样的原生types Dim o as Object set o = CreateObject("System.Array") 即使System.Array是COM可见 ,似乎不可能实例化它。 任何想法如何延迟绑定VBA中的数组数据types? 请不要提及Dictionary或Collections,因为这个问题对于数组非常具体 附加信息: 这是我的另一个问题的后续行动。 由于似乎不可能将本地VBA数组传递到本地.Net集合而不循环,我只是想知道是否有可能延迟绑定一个数组,因为两者似乎都是安全的,这意味着它们是兼容的,因此将一个VBA数组传递给一个。净一个将是可能的 – 请纠正我,如果我完全错了。