Microsoft.Office.Interop.Excel.Application-Invokeing Different Versions of Excel
我有以下问题: var oExcelApp = new Microsoft.Office.Interop.Excel.Application(); 在这台计算机上,这启动了Excel 2016,但是我在机器上安装了Excel 2010和Excel 2016.我想从2010年开始,并且想在我的机器上安装2010年和2016年. 根据这篇文章,这是不可能的.但是,我的理解是,您可以以编程方式执行此操作>: (将Excel 2010注册为默认应用程序) "C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver 但是,当我运行此命令时,它所做的只是打开Excel,未观察到所需的效果.有没有办法做到这一点,也许有某种注册表更改?或引用其他 libraries的版本? 更新1 我已经尝试过这也是如此: var oExcelApp = (Microsoft.Offic
30 2024-04-24
编程技术问答社区
Workbook_Open()在工作簿保护下不工作
我正在使用Excel 2016,并将此代码写在VBA中的ThisWorkbook对象中: Private Sub Workbook_Open() ThisWorkbook.Protect (password = "password") End Sub 它不起作用.这里的重点是,这应该防止用户在本工作簿中触摸电源查询功能.我将其保存为宏观启用的工作簿,我启用了所有宏和活动,这是唯一的工作簿. 我也有此其他代码: Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Protect (password = "password") ThisWorkbook.Save End Sub 这也行不通.如果我将" thisworkbook..protect"代码插入通用模块或工作表对象并手动运行,但是当我希望此特定的excel文件能够在Open或Oblox上自动运行此代码时,它就可以正常工作./p>
30 2024-03-21
编程技术问答社区
VBA WorksheetFunction.Sum对数组不起作用但对范围起作用?
我不是VBA新手,但我有一个新手问题. 我正在研究一个项目,我需要创建一个功能,该函数在电子表格中使用某个单元格,扩展范围然后总结. Function Top_Performers(Sales As Range, DataWindow As Integer) Dim MyArray () As Variant Dim c As Integer, r As Integer r = Sales.Row c = Sales.Column MyArray = Range(Worksheets("Data").Cells(r, c - DataWindow + 1), Worksheets("Data").Cells(r, c)) Top_Performers = Application.WorksheetFunction.Sum(MyArray) 但是,此函数即使对于非零范围,也输出了零值. 但是,下面的代码可行. Function Top_Performers
4 2024-03-04
编程技术问答社区
Excel。某些行内的动态范围+数据验证更新
我在这里拥有的是我的大数据集的一小部分,其中有很多下拉折扣和功能正在计算周围的所有内容.我只是超出了这张桌子,试图比以前更自动地使其更自动,但是我坚持使用绿色的那部分. 当我想在右侧(右表)上添加一些新单元格时,哪个功能可能是合适的稍后填充),但要自动识别它在左下拉下拉参考单元(模型)上? 我将还有一些其他将经常更新的工作簿,从该工作簿中,我必须查找所有"新事物"的内容,并以某些顺序填充它,就像这两个小示例一样. . 到现在为止,我设法找到了偏移和索引功能: =OFFSET(Sheet1!$B$1;1;0;COUNTA(Sheet1!$B:$B)-1;2) or `=$A$2:INDEX($A:$A,COUNTA($A:$A))` ..但是它无效.我的数据集(T和U列)不是从顶部行开始,而是从中间的某个地方开始(其他数据是之前和之后),这给了我麻烦,尤其是当我包括新行... 希望我对问题很清楚. 解决方案 好吧,您不必使用完整的列范围. 对于第一个
6 2024-03-04
编程技术问答社区
PowerQuery COUNTIF以前的日期
我有点生锈. 我需要在同一表中计算"以前的"条目. 例如,假设我们有一张汽车销售表. 出于PowerQuery的目的,此表将命名为tblCarSales 我需要添加两个聚合列. 第一个汇总列是先前销售的数量. Excel公式为=COUNTIF([Sale Date],"
96 2024-01-19
编程技术问答社区
VBA excel 2016 64位中的树状视图的替代方案
我正在尝试使用其中具有TreeView Control的VBA运行Excel.它在32位计算机中工作正常,但是在具有Excel 2016的64位机器上,它无法正常工作,并且没有发现TreeView组件. 还有其他类似的组件,我可以用? 替换treeview 解决方案 如果您在谈论64位办公室,而不是仅仅是64位窗户,那么我建议您在此处查看Jan Karel的替换treeview: http://www.jkp-ads.com/download.asp
56 2024-01-09
编程技术问答社区
如何在Excel中用vba调用ENTER键的函数
Google应该为我提供足够的例子,但它们似乎都没有起作用 我想要的是:用户每次按下,然后发布Enter键,以便我的程序做某事(即创建一个msgbox或call函数foo).我更喜欢以MWE的形式 我所做的事情:我尝试过搜索它,但这些示例都没有功能.他们编译,但什么也不做.我还确保保存以宏观兼容的Excel格式. 我正在使用的内容:我正在使用Excel 2016,64位与Office 365 编辑:用户将此信息输入工作表.我想拦截用户输入,每次按Enter按ENTER,将光标/活动单元格向下两行,因此每个单元格下方都有一个空单元格.如果用户按下选项卡,我想将光标/活动单元格右两个列,因此每个单元格的右侧一个空单元格. 编辑2:这是我现在拥有的MWE,应该有效,但什么都不做.我将其添加到工作表中,而不是作为模块 Sub SomeActions() MsgBox ("Hello") End Sub Private Sub Workbook_Ope
70 2023-12-07
编程技术问答社区
找不到Microsoft Forms 2.0对象库或FM20.DLL
在我的Excel 2016项目(Windows 7)中,我想使用剪贴板: Dim DataObj As New MSForms.DataObject DataObj.GetFromClipboard 但是我在第一行代码上有这个编译器错误: 用户定义的类型未定义 因此,我想添加对Microsoft Forms 2.0对象库的引用,但是我在整个计算机上没有FM20.DLL文件(我已经通过Explore和Cygwin进行了搜索). 我希望在下面的屏幕截图中看到它,但找不到. 如何使它出现? 解决方案 来自 我的猜测是这个旧知识基础文章 DLL也许仅包括在旧版本的办公室中?这部分似乎很有希望: 作为让最终用户安装Microsoft Office的替代方法, 您可以免费下载它们并安装Microsoft ActiveX 控制垫,还安装了FM20.dll.了解更多信息, 请参阅以下Microsoft开发人员网络(MSDN)网站: http://msdn.
18 2023-12-07
编程技术问答社区
使用Excel Interop在受保护的工作表中对Excel表(ListObject)进行排序
在受保护的床单上不允许排序Excel表(ListObjects).您将看到以下错误消息: 我花了数周的时间寻找没有成功的解决方案. Excel 2007代码样本已经过时了.没有关于如何规避这种限制的教程或指南. 这是我最终能够克服的方式. 解决方案 从表的Excel滤波器下拉菜单中排序时,没有可怕的事件.但是,您可以将事件从功能区的家和数据选项卡中调用时,将事件捕获. . 使用Excel 2016 Interop(文档级定制),Visual Studio 2015和C#: 右键单击您的项目 - >添加 - >新项目 - > ribbon(xml) 在您的ribbon.xml上:
32 2023-11-25
编程技术问答社区
我怎样才能将这个数据集转变成这个特定的顺序?
我正在使用Excel 2016,并且有一个带有492行的数据集,没有标题.数据从单元A1. 开始 数据集的提取物看起来像这样: 我想传输此数据集,以使其成为这种格式: 我是VBA的新手,我很难找到正确的解决方案.我尝试将转置记录为Macro(逐步)并查看VBA代码,但我仍然无法将其融合在一起. 解决方案 尝试此代码,但是在您调整顶部的两个常数之前,以匹配工作表上的事实.执行代码时,带有数据的工作表必须处于活动状态. Sub TransposeData() Const FirstDataRow As Long = 2 ' presuming row 1 has headers Const YearColumn As String = "A" ' change as applicable Dim Rng As Range Dim Arr As Variant, Pos As Va
18 2023-11-17
编程技术问答社区
VBA-通过计算负值从高到低排序?
如何通过计算负值来排名最高至最低? 我可能会使用类似的东西,如果elseif逻辑,但我似乎无法弄清楚 Set CountRng = range("B1:E1") CountApple = Application.WorksheetFunction.CountIf(CountRng, " CountOrange then or endif... 也许有更好的方法可以做到这一点? 解决方案 您可以使用此公式: =SUMPRODUCT(--(COUNTIF(OFFSET($B$1,(ROW($1:$3)-1),0,1,4),"COUNTIF(B1:E1,"
8 2023-11-17
编程技术问答社区
如何在Excel中对数据透视表的父字段前面的所有子字段进行转置
我有一个汽车备件的数据,其多个商店位置在仓库中. 我要做的就是将位置放在零件号的前面,因此很容易知道特定零件号的所有位置. 当前的枢轴数据看起来像这样 我在下图中手动转移了几行,但是数据包含约70k行,因此我正在寻找一个更好的解决方案 请参考下表 +--------------+-----+-------+-------------+ | Item name | Qty | UoM | Stock | +--------------+-----+-------+-------------+ | '0450000115 | 324 | piece | G12B04 | | '0450000A61 | 312 | piece | G12B05 | | '0450000115 | 336 | piece | G12B06 | | '0450000A61 | 228 | piece | G12B07 | |
6 2023-11-17
编程技术问答社区
Excel 2016的条件编译与32位标志
在今天通过更新获得的OSX上的新的64位版本中,在检查未定义没有PTRSAFE的函数定义时,似乎没有遵循条件汇编(就像适用的情况一样32位平台).在此示例中,我们对不同平台的同一函数具有不同的定义,并且当Excel加载加载项时,它会死去并抱怨第三个定义在函数声明中没有PTRSAFE(但是当然不是因为它不是因为它用于32位平台). 在VBA中列出此代码时,是否有任何方法可以使Excel不会死亡?还是这只是OSX上64位Excel 2016中的错误?对我来说似乎是一个明显的错误.我在哪里报告excel中的错误? #If Mac Then ' Even though the functions are exported with a leading underscore, Excel 2011 for Mac doesn't want the leading underscore as part of name Private Declare PtrSafe Function ge
12 2023-11-17
编程技术问答社区
如何在Excel VBA中把一个范围obj变量传递给一个子(2016)
给定以下代码: 我似乎无法成功地将范围对象变量从一个子功能到另一个子功能.我花了整整一天的时间进行研究,并在吞咽自豪之前进行了试验. 请阅读下面的评论,并回复您对为什么最后两行不会行为的任何想法. Public Sub doSomethingToRows(ROI As Range) *'do Something with the cell values within the supplied range* End Sub ' Public Sub testDoAltRows() Dim RegionOfInterest As Range 'is this an object or not? '*The following yields: Class doesn't support Automation (Error 430)* '*Set RegionOfInterest = New Worksheet 'this just give
6 2023-11-17
编程技术问答社区
VBA-检测汇编失败的方法
我有以下代码: Public Function Compiler() On Error GoTo ErrorHandler Compiler = "Successfully Compiled" Dim compileMe As Object Set compileMe = Application.VBE.CommandBars.FindControl(Type:=msoControlButton, ID:=578) If compileMe.Enabled Then compileMe.Execute End If Exit Function ErrorHandler: Compiler = "Unable to Compile - " & Err.Description End Function 它与建议非常相似在此处发布,但行之有效.它您将错误介绍到其余的应用程序中并运行此问题,您
8 2023-11-16
编程技术问答社区
通过Excel VBA隐藏所有单元格的日期过滤器
我正在使用以下内容来滤除特定日期,但是它隐藏了所有单元格,并且不会留在所需的数据中.手动完成后,它可以正常工作,当我将范围更改为最后一行时( $ AL1210 )时,此范围会增加,因为我每天都会粘贴新数据. 我正在尝试找到该范围的解决方案,以便理想地自动增加到最后一行(尽管我尝试了其他答案并获得相同的结果,因为我不明白为什么过滤器不起作用,可以有人帮我吗? Sub Auto_Filter() `Auto_Filter Macro `This Auto Filters all data for years 2017 & 2018, this also sorts to newest date first Keyboard Shortcut: Ctrl+Shift+A Sheets("Paste Data").Select ActiveSheet.Range("$A$1:$AL$10000").AutoFilter Field:=9, Cr
14 2023-11-16
编程技术问答社区
Excel VBA从工作表中的公式创建一个命名范围
你好,我的一些VBA代码有问题. 我正在制作一个多动态表,可以帮助我保留对程序的控制. 因此,当我调整表中的某些内容时,我可以使用此代码来更新所有代码. 在表中,我使用此代码来定位我所需的数据,到目前为止,它运行良好. Source_1_Criteria = "Factuur" Source_1 = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Criteria).Offset(0, 1).Value Me.ListBox1.RowSource = Source_1 现在,我想使用相同的代码和一些额外的代码来创建一个命名范围. 当我仅使用一些文本的单元格时,这起作用了,但是当我用公式vba填充单元时,会给我带来错误. Source_1_Criteria = "Factuur" Source_1_Name = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Crite
36 2023-11-16
编程技术问答社区
VBA将堆积柱状图上的数据标签从'值'改为'系列名称'。
我想将堆叠列图表上的数据标签从"值"更改为"系列名称". 我要编辑的图表: 我在互联网上搜索了最好的方法,我认为这可以做到的唯一方法是使用VBA.我仍然是VBA菜鸟,所以任何帮助都将不胜感激 解决方案 进入Excel,我选择要编辑的图表,然后通过转到图表工具>添加图表元素>数据标签>更多数据标签选项 ,然后选择所有标签 接下来,我取消选中我在标签中不需要的任何选项,并在我刚刚打开的对话框中的"标签选项"下检查我想要的那些选项. 这对我来说很好,但是如果您不适合您,或者您出于某些其他原因想通过VBA编辑标签,则此脚本片段将给定图表的标签设置为系列名称: Option Explicit Sub Macro1() With ThisWorkbook.Worksheets("Grafar, utvikling").ChartObjects("Graf3").Chart.FullSeriesCollection(2) If Not .HasDa
32 2023-11-16
编程技术问答社区
Excel VBA:UDF导致#NAME?从单元调用时错误
我复制了一些UDF函数代码,这些代码从本指南 据说这对他人有用.我并没有真正更改代码,但是对于透明度而言,这是我在工作簿中作为模块的确切代码: Function IsExtWorkBookOpen(Name As String) As Boolean Dim xWb As Workbook On Error Resume Next Set xWb = Application.Workbooks.Item(Name) IsExtWorkBookOpen = (Not xWb Is Nothing) End Function 现在,当我在工作簿的单元格中输入函数时,该函数在下拉列表中作为选项显示.我按下标签以自动填充UDF的全名,以确保正确键入功能名称.然后,我在不同的单元格中几次将该函数称为字符串,例如: =IsExtWorkBookOpen("C:\Computer\Fake\filepath\name\CORRECTLY SPELLED
14 2023-11-16
编程技术问答社区