我在十多年前编写了一个Excel VBA加载项,它使用旧的Commandbars将菜单放在Excel的"工具"菜单中(在Excel 2003及更早版本中)或Excel的"加载项"选项卡中(在Excel 2007及更高版本中).从97到2013,所有版本的Excel中出现的菜单从未出现过问题.
但是现在用户说Excel Excel中没有出现Excel加载项菜单.通常这意味着加载项未加载,但在他的情况下加载项已加载并正常工作.我们知道加载项已加载并正在工作,因为加载项添加了用户定义的工作表函数,并且这些UDF对他来说工作正常.但是他想要进入加载项的菜单而不能.
我的谷歌搜索显示有些人在2013年使用加载项菜单时出现问题,但我没有找到任何特定于此问题的内容.
是的,他尝试在Excel选项>自定义功能区中启用"加载项"选项卡.
BTW这是一个.xla加载项,而不是COM加载项.
有什么建议?
在Windows资源管理器中,如果我右键单击某个文件并选择"属性"以获取文件的"属性"窗口,然后选择"详细信息"选项卡,则会在其中列出一个名为"上次保存者"的属性.它似乎是上次修改文件时登录的Windows帐户名.
我查看了FileSystemObject但是我没有看到File对象有这样的属性.
我如何在VBA中获得该属性?它有Windows API吗?
更新:
在这个线程中有3次尝试使用Shell的GetDetailsOf.我很欣赏这些努力,但是在尝试了所有这些(特别是OssieMac的代码示例)之后我似乎很清楚,在GetDetailsOf中找不到存储在文件系统的"Last Saved By"字段中的文本.
抓我的头.Windows资源管理器如何做到这一点?
有关处理此问题的最佳做法的任何建议?
我编写了一个Excel加载项,它提供了UDF(用户定义的工作表函数).一切都很好,直到一个用户将他的工作簿使用这些函数发送给另一个用户,或者只是尝试在多台计算机上使用工作簿,其中加载项已安装到不同的路径.
即使路径中唯一的区别是驱动器号,当在另一台计算机上打开工作簿时,旧的完整路径将出现在所有UDF前面的公式中,并且公式会返回错误.
解决这个问题的一种方法是搜索和替换工作簿中的所有公式,用空字符串替换路径.然后公式为当前计算机上的加载项路径重置自己.有时我必须进入VBE并运行CalculateFullRebuild以使公式起作用.虽然它有效,但对技术含量较低的用户要求很多,而且对于那些经常移动工作簿的用户来说,经常这样做是很烦人的.
建议?
另外 - COM加载项有这个问题吗?我的加载项是xla.虽然我对此感到好奇,但在这种情况下这是一个没有实际意义的问题,因为COM加载项在Macintosh Excel上不起作用,我需要这个加载项才能跨平台工作.
更新:
根据要求,这是一个截图:
屏幕截图显示了公式http://i62.tinypic.com/axz68n.png中的路径
这个截图显示了如果Fred将加载项放在C:\ Fred的Stuff\Fred的Excel Stuff\MyAddin.xla中,将他的工作簿发送给Martha,后者将相同的加载项放在另一个路径中,例如C: \玛莎的文件\玛莎的Excel文件\ MyAddin.xla,玛莎打开弗雷德发送的文件.
如果Martha删除路径,在公式中只留下"= MyUDF()",Excel将在Martha的路径中找到Martad计算机上的MyAddin.xla(假设她以前在Excel中安装了MyAddin.xla作为加载项) ),并正确解决公式.
如何在Excel 2007和2010中更改图表轴的字体属性?
不是轴标题 ; 那很容易。我在问轴Itelf的字体。
它在Excel 2010中记录了与此等效的记录:
shEditSizeScales.ChartObjects("MyChart").Chart.Axes(xlCategory).Format.TextFrame2.TextRange.Font.Size=12
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误,并且在“监视”窗格中看不到TextFrame2之后的任何内容。
即使我单步执行记录的代码,它也会给我同样的错误。
我浏览了对象模型,但没有看到。
怎么做?
在 SQL Server 中,MIN 和 MAX 可以作用于不计算为数字的文本,返回具有最低或最高文本排序顺序的文本项,或者如 SQL Server 中所说的“排序顺序”。
是否可以在 Excel 中执行此操作,而无需使用实际排序的 UDF?
例如,MIN("bb","aa","cc") 返回"aa",MAX("bb","cc","aa") 返回"cc"。
Excel 的 MIN/MAX 会忽略文本,尽管 MINA/MAXA 可以处理文本,但它们会在无法解析为数字的文本上中断。大/小也不这样做。
FWIW,一位同事问我如何在枢轴中做到这一点。我没有看到不使用自定义函数的方法。我错了吗?
我有一个 Excel VBA 插件,可以添加用户定义的函数 (UDF)。这些函数在计算结果方面都工作得很好。
我使用 MacroOptions 将它们输入到函数向导中。
在工作表中使用它们时,它们会自动更正函数名称的大小写。例如,如果函数名为 MyFunction,并且用户将其输入为 myfunction,则在输入公式时,它会将函数名称的大小写自动更正为 MyFunction。就像 Excel 的内置工作表函数一样,如果您输入例如中位数,它会自动将其更正为中位数。
但是,有一个 UDF 的自动更正不正确。我希望它是例如 MyFunction,但即使用户这样输入它,它也会自动更正为所有小写字母 myfunction。
我查看了每一行相关的代码,但找不到任何原因。除了函数名称、函数描述以及函数本身的代码和参数之外,所有其他 UDF 的代码都是相同的。
知道为什么一个 UDF 以不同的方式自动更正函数名称吗?
以下是 MacroOptions 行的示例:
Application.MacroOptions "MyAddin.xla!MyFunction", "Description of MyFunction for the Excel's Function Wizard.", , , , , "Custom category in Function Wizard"
Run Code Online (Sandbox Code Playgroud)
UDF 本身如下所示:
Public Function MyFunction(param1 As Long, param2 As Long) As Long
'MyFunction's code here...
End Function
Run Code Online (Sandbox Code Playgroud)
同样,UDF 计算正确。问题在于函数名称的自动更正。
我尝试关闭该插件,然后创建一个新的 UDF,其函数名称与新的默认 Excel 工作簿中受影响的函数的名称相同。它工作正常——它自动更正为正确的大小写。但是当我关闭它并返回到插件时,问题又出现了。
更新:
以下是我解决问题的步骤(谢谢,查尔斯·威廉姆斯!):
在Excel 2016 VBA中,我刷新了几个这样的查询:
MyWorkbook.Connections(MyConnectionName).Refresh
Run Code Online (Sandbox Code Playgroud)
代码完成后,没有遇到任何错误,我发现大多数查询的沙漏图标仍在旋转几秒钟.
所有刷新完成后是否可以检查成功?我担心我的代码不会知道代码完成后但在查询完成刷新之前是否发生错误.
顺便说一下,我不想做一个RefreshAll,因为有些查询依赖于其他查询(将它们用作源).我按特定顺序刷新它们,以便在依赖查询之后刷新相关查询.
更新:
我看到Connection对象有一个只读的RefreshDate属性,乍一看看起来可以用来做这个检查:
MyWorkbook.Connections(MyConnectionName).OLEDBConnection.RefreshDate
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有得到设定.我试图检查它时出错.如果我将Variant变量设置为该RefreshDate属性,则该变量显示为"Empty".源是SQL Server数据库.
excel ×7
vba ×6
excel-vba ×4
excel-2010 ×1
excel-2013 ×1
excel-addins ×1
excel-udf ×1
file ×1
powerquery ×1
udf ×1
winapi ×1