问题标签 [dsoframer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5434 浏览

visual-studio - DSOFramer 在另一个窗口中关闭 Excel 文档。如果文件中未保存数据,则 dsoframer 无法打开并显示“尝试访问无效地址”

我正在使用Microsoft's DSOFramer控件允许我在对话框中嵌入 Excel 文件,以便用户可以选择他的工作表,然后选择他的单元格范围;它与我对话框上的导入按钮一起使用。

问题是当我调用该DSOFramer's OPEN函数时,如果我在另一个窗口中打开 Excel,它会关闭 Excel 文档(但让 Excel 继续运行)。如果它试图关闭的文档有未保存的数据,我会在另一个窗口中看到一个关闭 Excel 文档的对话框。如果文件中未保存数据,dsoframer则无法打开并显示消息框:Attempt to access invalid address.

我构建了源代码,并逐步完成,并在其CDsoDocObject::CreateFromFile函数中进行了调用,调用BindToObject了 IMoniker 类的对象。HR0x8001010a The message filter indicated that the application is busy。_ 失败时,它会尝试InstantiateDocObjectServer通过Microsoft Excel 工作表...失败并显示. 只需调用,首先使用,然后(如果失败)使用.classidCLSIDHRESULT0x80040154 Class not registeredInstantiateDocObjectServerCoCreateInstanceclassidCLSCTX_LOCAL_SERVERCLSCTX_INPROC_SERVER

我知道DSOFramer是一个流行的示例项目,用于将 Office 应用程序嵌入到各种对话框和表单中。我希望其他人遇到过这个问题,并且可能对我如何解决这个问题有一些见解。我真的不希望它关闭任何其他打开的 Excel 文档,如果由于未保存的数据而无法关闭文档,我真的不希望它出错。

更新 1:我尝试更改classid传入的内容Excel.Application(我知道该类会解析),但这没有用。在CDsoDocObject中,它尝试打开 key HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\DocObject,但失败了。我已经在视觉上确认该密钥不存在于我的注册表中;该指南存在密钥,但没有DocObject子密钥。然后它会产生一个错误消息框:The associated COM server does not support ActiveX document embedding。当我尝试使用Excel.Workbook programid.

更新 2:我尝试启动 Excel 的第二个实例,希望我的自动化将绑定到它(是最近调用的)而不是问题 Excel 实例,但它似乎没有这样做。结果是一样的。我的问题似乎归结为:我正在调用BindToObjectclass 的对象IMoniker,并接收0x8001010A (RPC_E_SERVERCALL_RETRYLATER) The message filter indicated that the application is busy. 我尝试过使用传递给BindToObject(通过SetBindOptions)的标志,但似乎没有任何区别。

更新 3:它首先尝试使用 IMoniker 类进行绑定。如果失败,它会调用asCoCreateInstance方法。这可能适用于其他 MS Office 对象,但当它是 Excel 时,该类适用于工作表。我将示例修改为,然后获取工作簿,然后为目标文件调用 ,该文件返回一个 Worksheet 对象。然后我返回该指针并与原始示例代码路径合并。现在都在工作。clsidfallbackCoCreateInstance _ApplicationWorkbooks::Open

0 投票
1 回答
3470 浏览

excel - 在 Excel 范围 (IRange) 上调用 Select 时出现 0x800a03ec。范围是从工作表的 usedrange 返回的

我正在尝试选择“使用范围”。我得到了工作表的 UsedRange,然后在其上调用 Select 函数。我在选择调用中收到 HRESULT 0x800a03ec。

这是代码:

COleVariant 结果;

HRESULT hr = AutoWrap(DISPATCH_METHOD, &result, irange, L"Select", 0);

我不会费心发布 AutoWrap 功能的代码(除非有人问)。它非常有名,我没有修改它。

我很确定 irange 很好,因为我尝试了一些调用来验证它是否符合我的期望,并且确实如此。如果我遍历它,我可以看到每个单元格的内容(并且是正确的);返回的行数和列数是正确的,并且返回的“地址”属性签出。

工作表未锁定。

我已经看到发布与区域设置有关的其他问题,并且我的系统设置为美国英语,我的用户帐户也是如此。两者都没有改变。

希望有人能帮忙!

更新:我也试过

这确实返回 S_OK,但它不选择范围。通常,我不能直接调用 iRange 结构中的函数;结果是 gpf 或访问冲突——所以我必须使用 autowrap 函数(来驱动 Invoke 调用)。我对这个电话不起作用并不感到惊讶。

我还尝试以非只读模式打开 excel 文件,以防我被锁定。这并没有解决问题。我可以通过从范围中获取单个项目(单元格)并调用其 Select 来选择单个单元格,但我无法选择范围。

0 投票
2 回答
1767 浏览

excel - Excel 自动化。需要从范围中选择多个项目

我有代码可以让我在一个范围内选择一个项目:

这工作正常。但是,我需要选择范围内的所有单元格,但我无法找到一种方法来在 Item 属性的“get”调用中指定它。尝试使用 -1,-1... 尝试在 2 个变体中传入一对 bstr,指定以冒号分隔的列范围和行范围;还尝试传入范围规范字符串的单个参数。没有工作。

更新:我也试过

这确实返回 S_OK,但它不选择范围。通常,我不能直接调用 iRange 结构中的函数;结果是 gpf 或访问冲突——所以我必须使用 autowrap 函数(来驱动 Invoke 调用)。我对这个电话不起作用并不感到惊讶。希望我能得到这个工作......这是这个项目的最后一部分。

0 投票
2 回答
2291 浏览

excel - 如何编辑 DsoFramer 1.3?

我在我的项目中使用DsoFramer 1.3 来保存 Excel (2007) 文档。但是它有一个很大的问题,那就是:

DsoFramer 打开的所有 Excel 文档只共享一个 Excel 进程。结果是当DsoFramer打开第二个Excel文档时,第一个文档是不可编辑的。

更有什者,当我直接在Windows资源管理器中双击一个Excel文档时,DsoFramer中的文档会失去焦点,因为excel.exe任务管理器中只有一个,最后一个会得到它。

幸运的是,微软提供了 DsoFramer 1.3 的源代码,但不支持它。(http://www.microsoft.com/downloads/details.aspx?FamilyId=CE2CA4FD-2169-4FAC-82AF-770AA9B60D77&displaylang=en。)

每次使用 dsoframer 打开 Excel 文档时,如何编辑源代码并使其生成新的 Excel 进程?

我尝试了史蒂夫的方法,但它不起作用。 DSOFramer 在另一个窗口中关闭 Excel 文档。如果文件中未保存数据,则 dsoframer 无法打开并显示“尝试访问无效地址”

0 投票
1 回答
1564 浏览

vb6 - 使用 Vb 6.0 右键单击​​ Dso Framer 控件的活动文档时隐藏或禁用 MS Word 弹出菜单

我正在使用 Microsoft DSO Framer 控件来查看 Visual Basic 窗体中的 word 文档。

在 DSO Framer 控件中托管(打开)Word 文档之后。

右键单击 Word 文档时,会出现 Ms word 上下文菜单。

我想隐藏这个弹出菜单。

任何人都可以帮助我解决这个问题。

我正在等待解决方案。

0 投票
0 回答
1121 浏览

c# - DSOFRAME 和 64 位

我们一直在使用dsoframer将 excel 嵌入到我们的 .Net 应用程序中。除了小快手,它效果很好。不过似乎不适用于 64 位机器。

有没有人有这方面的运气?也许重新编译互操作/源?dsoframer 是一个 C++ ActiveX 控件,所以这是有道理的……只是想知道是否有人已经完成了这项工作,或者我是否遗漏了一些东西。

0 投票
3 回答
13254 浏览

dsoframer - MS 站点缺少 MS KB311765 和 DsoFramer

我试图获取 DsoFramer,发现它的下载页面知识库文章都不见了。我已经从 cnet.com 下载了 DsoFramer,但我仍然很好奇:为什么要删除它,如果是故意的,我们应该使用什么来代替它?

0 投票
1 回答
490 浏览

c# - 阻止打开文件

我正在使用 dsoFramer 在 winforms 中打开 docx 文件。当在 dsoframer 中打开 docx 文件并且用户从 Windows 资源管理器中打开相同的文档时,应用程序变得不稳定。在 dsoFramer 中打开文件时,如何防止从 Windows 资源管理器打开文件。

此致。

0 投票
1 回答
3325 浏览

64-bit - DSOFramer.ocx 在 64 位 Windows 窗体中托管 word 文档

看起来 DSOFramer.ocx 组件不再可从 MSDN 下载,如此处所述。DSOFramer 组件也是一个 32 位组件。鉴于此,我有两个问题:

  1. 除了使用 DSOFramer.ocx 组件之外,还有其他方法可以在 Windows 窗体中托管 Word 文档吗?
  2. 如果我移动到 Windows 64 位操作系统,并将 Windows 窗体作为本机 64 位进程运行,那么如何在 64 位进程中托管 word 文档?
0 投票
1 回答
769 浏览

excel - DsoFramer 禁用正在运行的 Excel 实例

我正在使用 DsoFramer 控件在我的应用程序中显示 Excel 文档。这是问题所在:如果我在启动我的应用程序之前将 Excel 2007 作为独立应用程序运行,然后启动我的并在其中打开一个 Excel 文档,那么只要我的应用程序显示 Excel 文档。这可以避免吗?