我安装了以下内容:
一些用户报告说,如果他们通过双击Excel文件启动Excel,则加载项将不会加载.但是,如果他们通过"开始"菜单(或"快速启动"工具栏)打开Excel,则加载项可以正常加载.
一些细节,以防他们帮助:
任何有关原因的想法或如何解决这个问题将不胜感激.
更新:我相信我找到了解决这个问题的方法.
当注册IDTExtensibility2 dll时,它会自动为加载行为,加载项名称等创建HKCU条目.但是我也让我的安装文件注册了HKLM的加载项,以便所有用户都可以使用它.机.这导致系统上的双重注册表项.
我不认为这会是问题的原因.我手动编辑了HKCU条目,Excel似乎忽略了它们并遵循HKLM条目.但是,我收到另一位开发人员的提示,解释他们遇到了同样的问题,他们的解决方案是删除重复的注册表项.我试过了,似乎已经解决了报告这个bug的(极少数)人的问题.
下面的Inno设置代码将添加HKLM条目,仔细检查加载行为是否正确(因为我是偏执狂),然后删除HKCU条目.在您看到所有大写字母的任何地方替换您的文件属性.
[Registry]
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: LoadBehavior; ValueData: 3
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: CommandLineSafe; ValueData: 0
// Set load behavior to on start up
procedure ResetAddinRegKeys();
var
bUpdate : Boolean;
LoadBehaviorKey : Cardinal;
begin …Run Code Online (Sandbox Code Playgroud) 我正在编写一个VS加载项,我需要在成功构建后运行某个方法.我尝试过使用dte.Events.BuildEvents.OnBuildDone但即使构建失败也会发生这种情况.
我应该使用房产或其他活动吗?
我想在Visual Studio 2010中使用带有C#的DTE2对象来获得对当前解决方案的引用.
我首先尝试了以下代码:
var dte = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as EnvDTE80.DTE2;
Run Code Online (Sandbox Code Playgroud)
但是当我打开2个解决方案,并且这个代码在第一个解决方案中时,我得不到对当前解决方案的引用,而是对我加载的最后一个解决方案的引用.我需要当前的解决方案......
在互联网上搜索,我发现以下解决方案如何从VSPackage获取当前的解决方案目录?:
// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
Run Code Online (Sandbox Code Playgroud)
但是当我使用它时,我的dte对象总是为NULL.
那么如何使用C#on .net framework 4.0获取VS2010中当前的解决方案对象?
有时我浪费时间在运行时在对象中搜索值.
当然你 - 都知道这个任务 - >打开QuickWatch视图并浏览属性,直到找到你要找的东西.
我正在寻找一个工具/加载项/扩展,可以在对象中搜索值.
带有搜索增强功能的QuickWatch视图将是perferct :)
SB.知道一个工具?
谢谢!
是否有任何Visual Studio 2008加载项或宏来根据.h文件中声明的顺序对.cpp文件中的方法实现进行排序?编辑:任何最近的Visual Studio(2010年,2013年,2015年,2017年)
我安装了SQL Server 2008 R2.
过去我安装了Redgate Sql Promprt 5加载项.它不再起作用,但我仍然在SQL Management Studio中有菜单.
我没有在Windows 7 的程序和功能列表中看到加载项,因此我无法卸载它.当我点击菜单中的命令时,我收到以下消息:
无法加载支持此命令的加载项.你想删除命令吗?
当我选择"是"时,它仅从菜单中删除所选命令.
我想从Management Studio中完全删除加载项.
我在哪里可以找到加载项以及在哪里可以在Management Studio 2008 R2中配置它们?
如果我需要删除一些文件来摆脱它,我在哪里可以找到这些文件?我查看了安装文件夹,但没有找到任何关于加载项的信息......
我目前正在使用Excel 2010加载项,以前是Excel 2007加载项.在切换计算机的过程中,我认为加载项已被转换.
我的一些客户表示加载项不再适用于Excel 2007,因此我尝试在安装了Excel 2007和Visual Studio 2010的VirtualBox中对其进行调试.
现在我收到错误信息:
您无法调试或运行此项目,因为未安装所需的Microsft Office应用程序版本.
我开始了一个新的Excel 2007加载项目,并尝试找出差异是什么,并想出它与dll有点关系,所以我改变了我的2010插件,直到它看起来像2007插件.
我仍然收到错误消息,指出我的项目无法调试.
有什么我可以忘记改变的吗?
遗憾的是,编写一个全新的插件不是一种选择.
到目前为止,这些问题对我没有帮助:
这是一个假设的情况.
我想知道是否可以在文档级外接程序中将C#类公开给VBA.
这是一个SSCCE:
在VS PRO 2012中,我启动了一个新项目,选择Office - > Excel 2010 Workbook.(确保选择.Net framework ver 4)
我已经DateTimePicker向Sheet1 添加了一个控件.
我可以在C#解决方案中设置/获取.Value属性DateTimePicker而不会出现问题.
在调试时:在VBA中,.Value属性不会公开.(试过.OLEFormat.Object.Value)
并非所有属性都可以暴露给VBA,因为ActiveX控件DateTimePicker被包装,MSForms因此Excel可以识别它(兼容性).
我需要能够从VBA获取包装控件的实际值,但我不确定如何去做(无论是否可能)......
我知道控件本身支持事件,但这不是我想要的路径.我希望能够从控件中获取静态/当前值.
这是我希望能够做到的:
在我的C#解决方案中添加一个类
暴露它,所以它可以从VBA中恢复过来 Dim obj as new MyExposedClass
然后在C#中显示MyExposedClass商店参考DateTimePicker(所有可用的属性)
然后我可以定义一个GetValue(string controlName)从C#POV返回值的函数
所以我发现这个解决方案 +(这个)似乎与应用程序级外接程序一起使用,但它不适用于文档级外接程序.
当我调试我的解决方案并打开VBA的对象浏览器时,我可以看到引用被自动添加到Microsoft Visual Studio 2008 Tools …
编辑:此问题的文本已更改为反映利用开放的xml代码和互操作.
我试图通过功能区将基本64位编码的图像插入Word文档.以下代码用于复制目的:
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void InsertPicture_Click(object sender, RibbonControlEventArgs e)
{
Word.Application wordApp = null;
Word.Document currentDocument = null;
Word.ContentControls controls = null;
try
{
wordApp = (Word.Application) Marshal.GetActiveObject("Word.Application");
currentDocument = wordApp.ActiveDocument;
controls = currentDocument.ContentControls;
currentDocument.Range().InsertXML(@"<pkg:package xmlns:pkg=""http://schemas.microsoft.com/office/2006/xmlPackage"">
<pkg:part pkg:name=""/word/media/image1.png"" pkg:contentType=""image/png"" pkg:compression=""store"">
<pkg:binaryData>iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIA
AADdHiL1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAVSURBVChTY3gro0IqGtUz3PTIqAAAlO/H4+qBWxcAAAAASUVORK5CYII=</pkg:binaryData>
</pkg:part></pkg:package>");
object tr = true;
object fa = false;
}
catch(Exception ex)
{
wordApp.ActiveDocument.Range().InsertAfter(ex.Message);
}
finally
{
if (controls != null) Marshal.ReleaseComObject(controls); controls = null;
if …Run Code Online (Sandbox Code Playgroud)