Tag: excel 2016

找不到Microsoft Forms 2.0对象库或FM20.DLL

我想用这个库来处理剪贴板。 我希望看到下面的截图,但我无法在我的参考库列表中find它。 我尝试添加VBA表单到我的Excel项目没有成功。 我怎样才能让它出现? 我的整个计算机W7和Excel 2016上没有FM20.DLL文件。

在图表中定位标签

我有一个包含两个图表的电子表格,其中我想根据表格中的值在一个系列的点之后添加一些文本框。 我为此创build了两个程序,每个程序都有自己的优点和缺点: Sub add_comments(apply_to As Series, source_range As Range) Dim i As Long Dim c As Range If source_range.Count > apply_to.Points.Count Then Set source_range = source_range.Resize(apply_to.Points.Count, 1) End If i = 1 For Each c In source_range If Not IsError(c) And i <= apply_to.Points.Count Then If Len(c.Text) <> 0 Then apply_to.Points(i).HasDataLabel = True apply_to.Points(i).DataLabel.Text = […]

Workbook_Open之后,错误的Excel窗口焦点

我最近升级到Office 365 / Excel 2016导致了一些不必要的行为更改。 工作簿(“组合鉴赏”)包含Workbook_open过程,该过程检查Workbook(“Index Returns”)是否打开; 如果不是,则会打开该工作簿。 使用Excel 2007, Index Returns将在后台打开,并保持在那里,这是所需的行为。 这将是“在窗口中”,可以在同一个Excel窗口中使用“ Viewfunction区的“ Window选项卡上的“ Arrange All选项View 。 使用Excel 2016,如果它通过Workbook_Open过程打开,则Index Returns将在其自己的Excel窗口Index Returns打开,然后放在前面。 (不能再在与Portfolio Appreciation相同的Excel窗口中查看)。 Index Returns在前面的事实是问题。 我试过select和取消select忽略使用DDE的其他应用程序; 我已经尝试了AppActivate方法(如下面的代码所示),并使用MsgBoxvalidation参数是否与相关的标题栏匹配。 不知道下一步该去哪里。 build议感激。 另外: Index Returns包含macros或连接。 Portfolio Appreciation包含除Workbook_Open之外的macros,并且在打开时(查询下载一些股票指数的东西)有一个刷新的Web查询。 Option Explicit Private Sub Workbook_Open() Dim wbs As Workbooks, wb As Workbook Dim IndexReturns As String Dim re As RegExp […]

表根据范围干扰VBA范围variables

Excel文件包含部署在表(VBA listobjects)中的VBA编码的用户定义函数(UDF)。 现在,出于逃避我的原因,如果UDF模块包含声明在任何子函数或函数范围之外的Rangevariables,当文件打开时,会出现非常严重的警告:“自动错误 – 灾难性故障”。 “灾难性”似乎有些夸张,因为在警告被驳回之后,文件似乎正常工作。 但是我仍然想明白这个问题是什么。 我已经设法复制这个问题与MVC的例子如下。 我在Windows 10上运行Excel 2016(更新)。 有两个表(即VBA列表对象): 表1列出了“项目”, 表2列出了“项目function”(两个表格都是通过select数据并单击“ Insert选项卡上的表格生成的)。 表2在Item_Name字段中有一个名为ITEM_NAME()的UDF,它根据项目ID返回项目名称,请参阅截图: 函数ITEM_NAME()实际上是常规工作表函数INDEX和MATCH的一个包装,如下面的代码所示: Option Explicit Dim mrngItemNumber As Range Dim mrngItemName As Range Public Function ITEM_NAME(varItemNumber As Variant) As String ' Returns Item Name as a function of Item Number. Set mrngItemNumber = Sheets(1).Range("A4:A6") Set mrngItemName = Sheets(1).Range("B4:B6") ITEM_NAME = Application.WorksheetFunction.Index(mrngItemName, […]

当从SSRS报告导入到Power Pivot时,“XML分析在第xxx行,第36列:非法xml字符失败”

Excel 2016(16.0.6965.2076) SQL Server 2014(12.0.4213.0) 我有一个具有10个参数的SSRS报告 – 两个是date,其他8个是使用查询填充选项的文本下拉菜单。 如果我试图将此报表提取到Excel中的Power Pivot Data Model(Power Pivot – > Manage – > From Other Sources – > Report),则在完成表导入向导时(成功指定我的报表和参数值并查看报表在向导中正确显示)通过单击select表和视图页上的完成button我收到一条错误消息: 第1345行第36列的XMLparsing失败:非法的xml字符。 给定的行取决于我为报告指定的参数值,但列总是36。我检查了我的报告,这些行和列号似乎与我的报告没有关系,因为它们往往都大于报告中返回的总行数/列数。 我在网上查了一下,发现了一些处理这个问题的资源,但我一直无法find解决我的问题: 这个博客和这个关联的Microsoft Connect票据表明,我可以通过导出我的报告作为数据馈送,并从Power Pivot向导中引用该报告,但是这也不适用于我,我得到了一个不同的错误: 无法获取数据馈送模式“[报告供稿名称]”。 请确保此提要存在。 我在网上其他地方发现了这个后续错误(或原始问题)的build议,可能是报告URL太长(包括参数/值)的结果。 不幸的是我看不到任何进一步的方法来减lessURL的长度(目前超过700个字符),因为我已经最小化了我的参数名称和报告名称,但仍然有这个问题(我不相信我可以减less参数值,因为它们是从我们不能改变的应用程序数据库中获取)。 我也看到了build议,用“指定值”参数replace我的“从查询中获取值”参数,但这是不可行的,因为参数值必须从上面提到的应用程序数据库中提取,并会随时间而改变,所以需要dynamic获取。 任何人都可以提出解决scheme或进一步的故障排除步骤,我可以按照这个问题?

确定string允许的最大长度a的通用方法

看看这个属性(鉴于你在第一张工作表上有一个表格): Application.Sheets(1).ListObjects(1).name 这个属性可以包含多less个字符? 那么,在testing了几个string之后,我得出结论:255,超过255个字符的任何string都会导致错误: 运行时错误5 – 无效的过程调用或参数 看看这个属性: Application.Sheets(1).ListObjects(1).Summary 这个属性可以包含多less个字符? 同样,testing几个string,你会得到一个大约50,000的数字,你把它设置得更高,你会得到相同的错误,除非在这种情况下,Excel有时会崩溃或吐出一个不同的错误(多次尝试后): Dim i As Integer Dim a As String For i = 1 To 5001 a = a & "abcdefghih" Next i Application.Sheets(1).ListObjects(1).Summary = a 对象'ListObject'的方法“摘要”失败 这种“隐藏的”字符限制出现在 这里 ( 在这里 , 这里 可能不太具体 ),并且它看起来不像他们在任何地方被logging,例如看看ListObject.Name的页面,没有注意到你可以在这个variables中存储多less个字符… 那么有没有更好的方法来确定呢? 您在属性中设置的string是否存储在固定长度的string中,这些string可以被访问以确定它们的最大长度是什么,或者是否有一些其他forms的文档可以用来获取这些信息? 这让我觉得奇怪的是,这些字符限制是在标准VBA对象中的大部分string上设置的,我不知道它们的目的是什么,为什么devise者select将“ListObjects.name”限制为255个字符,以及这是一个任意的默认限制还是那是一个有意识的决定。 我相信标准string的长度是这个 ,我不知道为什么偏离这个标准。 总结我上面提到的几点,把这个问题压缩成一句话: 是否有一种通用的方法来确定可以在对象的属性中设置的string的最大长度,而不是通过给它另一个值并忽略错误/检查字符截断来首先testing该string的属性?