背景:我正在使用C#在VS2010中开发Outlook 2007加载项.我正在做的具体事情是将菜单项添加到与电子邮件关联的上下文菜单中.我使用以下代码执行此操作:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemContextMenuDisplay += Application_ItemContextMenuDisplay;
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
private void Application_ItemContextMenuDisplay(Office.CommandBar commandBar, Outlook.Selection selection)
{
var cmdButtonCallContact = (Office.CommandBarButton)commandBar.Controls.Add(Office.MsoControlType.msoControlButton, 1, System.Reflection.Missing.Value, 6, System.Reflection.Missing.Value);
cmdButtonCallContact.Caption = "&Foo";
//cmdButtonCallContact.Picture = ?
cmdButtonCallContact.Click += cmdButtonCopy_Click;
}
private void cmdButtonCopy_Click(Office.CommandBarButton ctrl, ref bool canceldefault)
{
System.Windows.Forms.MessageBox.Show("Bar");
}
Run Code Online (Sandbox Code Playgroud)
问题:似乎无法设置图片.Msdn示例依赖于我没有的AxHost转换函数.是否有一种简单的方法可以将图像或BitMap设置为图片?
谢谢.
我想在我的C#代码中设置我正在创建的word文档的一些自定义文档属性.为此,我按照这篇MSDN文章提出了这段代码:
using Word = Microsoft.Office.Interop.Word; // Version 12.0.0.0
word = new Word.Application();
word.Visible = false;
Word._Document doc = word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
logger.Info("Setting document properties");
Core.DocumentProperties properties = (Core.DocumentProperties)doc.BuiltInDocumentProperties;
properties["Codice_documento"].Value = args[3];
properties["Versione_documento"].Value = args[4];
Run Code Online (Sandbox Code Playgroud)
不幸的是,每当它到达代码时我都会收到此错误:
HRESULT:0x80004002(E_NOINTERFACE)
这是为什么?我完全按照我的MSDN描述使用接口,为什么它不起作用?
我正在使用Interop for office 2010和.net 3.5
我想为Microsoft PowerPoint开发一个加载项.我安装了Visual Studio 2012并准备就绪,但我似乎无法找到任何简单的教程或有关该主题的入门指南,除了Microsoft的这篇精彩(讽刺)指南:http: //msdn.microsoft.com/en-us /library/vstudio/cc668192.aspx
我一直在网上搜索几天,但没有任何运气.
是否有任何人有开发PowerPoint插件的经验,谁可以给我一个如何开始的提示?
很高兴知道你喜欢Visual Basic还是C#以及为什么.
最后,抱歉,如果我听起来像一个菜鸟.我是肯定的.
亲切的问候.
我的公司计划为 Outlook 开发一个加载项,它可以与我们基于 Web 的内部 ERP 应用程序或我们的数据库交互以检索和更新数据。
我对这个主题做了一些研究,发现有两种方法可用:
但我仍然对每种方法的利弊感到困惑,还没有决定。有没有人有这方面的经验并给我一些建议?提前致谢。
我正在为 Excel 开发一个插件,清单具有ReadWriteDocument的权限。
我正在向Office.EventType.DocumentSelectionChanged事件添加处理程序
第一次,我在 Excel Online 中插入插件,它运行得很好。
稍后如果访问 Excel,则会失败并显示:
OSF.DDA.Error
code: 7000
message: "You don't have sufficient permissions for this action."
name: "Permission Denied"
Run Code Online (Sandbox Code Playgroud) 在Office 365 Outlook加载项中,Office.context.mailbox.item.body.getAsync()方法在Outlook Mac中不起作用.但它在safari和chrome中运行良好.
office js参考是" https://appsforoffice.microsoft.com/lib/1/hosted/office.js "
这是加载项阅读应用程序的代码
var _item = Office.context.mailbox.item;
var body = _item.body;
// Get the body asynchronous as text
body.getAsync(Office.CoercionType.Text, function (asyncResult) {
if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
}
else {
$('#subject').html(asyncResult.value.trim());
}
});
Run Code Online (Sandbox Code Playgroud) 我们有一个小型的Excel应用程序来补充我们的SaaS产品.独立它是无用的,因此,我有很大的问题进入办公室应用程序商店.实际上它没有任何意义,只适合我们的用户.但是,用户还可以轻松安装此应用程序吗?
它是使用HTML和JS与Office.js库编写的,因此应用程序本身基本上只是一个指向静态URL的xml清单文件.有文档如何侧载加载以进行测试:
我们的大多数用户都有一台在本地安装excel的Windows PC.并创建一个共享文件夹,....超出了他们的能力.我希望我能以某种方式将nginx配置为webdav或类似的将其添加到excel作为受信任的目录URL,但是我没有找到任何文档说明此目录URL可以是什么,除了网络共享.
关于mac和iPad,我更加困惑.我可以为他们提供一个他们需要执行的简单脚本/应用程序,以便将清单复制到正确的位置.
但我想我真正想知道的是,是不是有任何"官方"的方式来分发办公室添加,这只对少数人有用 - 谁不在你的组织中 - 请记住,没有共同的分享点服务器.如果您建议的用户没有最友好的方式?
更新:
为了使它更容易掌握 - 该应用程序被称为WebBSC,并且基本上使执行某些任务变得更容易,这些任务通常以前在Excel中完成.但由于我们所有的客户都拥有excel中的原始数据,我们创建了一个用于导入这些数据的插件(这可能不仅仅是一次,但也可能每月定期) - 这就是加载项没有的原因在商店里真的很有意义,另一方面我们不与我们的客户共享任何Office365或Sharepoint/Exchange帐户,它只是一个简单的SaaS应用程序.
我们为 Excel 开发基于 Office-js 的插件,我们想要为 Windows 上的桌面版 Excel 编写自动化功能测试(最好使用 Selenium)。
我们遇到的第一个问题是 Excel/Windows 的不同组合在下面使用 IE/Edge 的 webview。让 IE 死掉,假设我们只需要使用 Edge webview 进行测试(EdgeHTML,因为 Edge-chromium webview 尚未发布)。
所以主要问题是:我们无法(或不知道如何)将插件的 webview 与 Selenium 连接,因为我们不负责启动 webview 的进程 - 它是由 Excel 本身启动的。有没有推荐的方法来运行带有插件的桌面版 Excel 的功能测试?我们可以通过 COM 来控制 Excel 本身,所以这不是问题。但是如何控制addin下面的webview呢?
我们尝试过WinAppDriver,但它提供了生成窗口的特定于 Windows 的 XML,而不是我们希望看到的插件的 HTML,这使得导航和断言变得脆弱而复杂。
我认为我们到处搜索但找不到任何漂亮的解决方案,所以肮脏的黑客也是允许的,只要它们能够可靠地工作并且不会太慢。
selenium functional-testing office-addins excel-addins office-js
美好的一天,我的 Outlook 加载项在本地运行良好,但是当我将其托管在 S3 上时,出现以下错误。

根据一些研究,这似乎是边缘安全设置的结果。 阻止 javascript 会阻止我的整个应用程序加载任何内容。它作为加载项的本质阻止我更改此安全设置。
**如何以不会触发此安全措施的方式加载我的 JavaScript?**
javascript office-addins microsoft-edge office-js outlook-web-addins
我正在升级在 Share Point 办公室内运行的 Angular 应用程序。目前 Angular 应用程序使用的是版本 14,在我升级到 Angular 15 后,它工作正常。但是当我升级到 16 后,我就收到以下错误。
TypeError: this._history.replaceState is not a function
Run Code Online (Sandbox Code Playgroud)
打电话时会发生这种情况
this.router.navigate(['/path_to_component']);
Run Code Online (Sandbox Code Playgroud)
我在这个 SO 帖子上找到了修复。Office.js 使浏览器历史记录功能无效,破坏历史记录使用情况
<script type="text/javascript">
// Office js deletes window.history.pushState and window.history.replaceState. Cache them and restore them
window._historyCache = {
replaceState: window.history.replaceState,
pushState: window.history.pushState
};
</script>
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script type="text/javascript">
// Office js deletes window.history.pushState and window.history.replaceState. Restore them
window.history.replaceState = window._historyCache.replaceState;
window.history.pushState = window._historyCache.pushState;
</script>
Run Code Online (Sandbox Code Playgroud)
我不确定升级到 Angular 16 后会发生什么问题,尽管它与 office.js 有关
我正在使用相同版本的office.js。
我已经使用了哈希位置策略。任何人都可以帮助我理解这一点。
office-addins ×10
office-js ×5
.net ×3
c# ×2
vsto ×2
angular ×1
angular16 ×1
excel-addins ×1
interop ×1
javascript ×1
ms-office ×1
ms-word ×1
office-2010 ×1
office365 ×1
outlook ×1
powerpoint ×1
selenium ×1