gpt4 book ai didi

c# - 将嵌入式对象复制并粘贴到文件系统

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:08 25 4
gpt4 key购买 nike

交叉邮寄地址:https://social.msdn.microsoft.com/Forums/vstudio/en-US/8669c828-4919-43cc-b1ce-03c0b03def6e/copy-paste-embeded-object-to-file-system?forum=exceldev

背景:

我在 Excel 工作簿中编写了一大段 VBA 代码,以帮助处理大量重复性工作。我发现使用“池”VBA 编辑器维护和修改代码很痛苦。然后,我决定将这些 VBA 代码移动到 C# 解决方案,我想我可以从现代编辑器 - Visual Studio 中获益。

问题:

虽然我对VBA了解的不多,但对C#的了解就更少了。因此,当我尝试将我的 VBA 代码“翻译”为 C# 时遇到了一些问题,这是其中之一:

我为 Excel 创建了一个文档级解决方案。我需要将一些文件(.cab、.exe)嵌入到解决方案中,因此当我运行一个方法时(例如通过单击按钮),这些文件将被复制到文件系统,并执行一些工作。

在 VBA 中,我将这些文件嵌入到 Excel 工作簿中,然后我可以使用以下 VBA 代码将嵌入的对象复制到剪贴板:

Sheet1.OLEObjects("obj_cab").COpy

然后我可以使用以下 VBA 代码将对象粘贴到文件系统:

CreateObject("Shell.Application").Namespace("C:\Sample\").Self.InvokeVerb "Paste"

在 C# 解决方案中,我可以使用以下等效方法将嵌入对象复制到剪贴板:

Microsoft.Office.Interop.Excel.OLEObject OLEobj = (Microsoft.Office.Interop.Excel.OLEObject)sheet1.OLEObjects("obj_cab");
OLEobj.Copy();

然后就卡在这里了,不知道怎么从剪贴板中取出这个对象,放到文件系统中。 C# 中不存在“CreateObject”方法。

有人可以帮忙吗?是嵌入这些文件的更好方法还是将这些对象(文件)从剪贴板粘贴到文件系统的有效方法?

非常感谢!

最佳答案

选项显式

公开声明函数 FindWindow Lib "user32"Alias "FindWindowA"( _ByVal lpClassName 作为字符串,_ByVal lpWindowName As String) As Long

公共(public)声明函数 SendMessage Lib "user32"别名 "SendMessageA"( _ByVal HWnd 只要,_ByVal wMsg 只要,_ByVal wParam 只要,_lParam As Any) As Long

公共(public)常量 WM_CLOSE As Long = &H10公共(public)常量 IE_WINDOW_CLASS = "IEFrame"

子CloseAllInternetExplorer()

调暗 HWnd 一样长HWnd = FindWindow(IE_WINDOW_CLASS, vbNullString)执行直到 HWnd = 0SendMessage HWnd, WM_CLOSE, 0&, 0&HWnd = FindWindow(IE_WINDOW_CLASS, vbNullString)循环

结束子

公共(public)子 CloseIE() 昏暗的外壳作为对象 昏暗的 IE 作为对象

Set Shell = CreateObject("Shell.Application")

For Each IE In Shell.Windows
If TypeName(IE.Document) = "HTMLDocument" Then
IE.Quit
End If
Next

结束子

关于c# - 将嵌入式对象复制并粘贴到文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27685791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com