【问题标题】:How can I reference a .dotx resource in VB.NET? (Visual Studios Pro)如何在 VB.NET 中引用 .dotx 资源? (视觉工作室专业版)
【发布时间】:2014-09-05 04:13:28
【问题描述】:

我有一个程序需要使用扩展名为 .dotx 的文件。现在我将它作为解决方案中的资源。使用以下代码,而不是直接使用“C:\letterhead.dotx”,我想将我拥有的文件用作“嵌入式资源”。我尝试了以下方法。

        Dim oWord As Word.Application
        Dim oDoc As Word.Document
        oWord = CreateObject("Word.Application")
        oWord.Visible = False
                'Works:
                oDoc = oWord.Documents.Add("C:\Letterhead.dotx")
                'Does not work:
                oDoc = oWord.Documents.Add(My.Resources.Letterhead)
                'Does not work:
                oDoc = oWord.Documents.Add(My.Resources.ResourceManager.BaseName & "\Letterhead.dotx")

我知道所有这些都返回了错误的值,而不是我想要的。我只是不想强迫任何人使用它在运行之前将信头文件放在他们计算机上的特定位置。我确定有一个简单的解决方案,只是我不知道。

解决方案:

对于所有也有这个问题的人(只有我),您所要做的就是将嵌入文件写入 C:\ -

        Try
            File.WriteAllBytes("C:\Letterhead.dotx", My.Resources.Letterhead)
        Catch ex As Exception
            MessageBox.Show("Failed to write to C:\", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

【问题讨论】:

  • 没有简单的解决方案。当您使文件成为嵌入式资源时,它会在您的 EXE 中编译该文件。世界上没有应用程序(如 Word)会反编译您的 exe 并查找嵌入式资源然后打开该文件。您需要做更多的工作,将嵌入式资源写入物理文件,然后使用该文件和位置在 Word 中打开。如何做到这一点是另一个问题。不容易,但可以通过跳出框框、独创性和谷歌的一点思考来完成。

标签: vb.net vba visual-studio-2013 ms-word embedded-resource


【解决方案1】:

您绝对可以将 Word 文档存储在嵌入资源中的 .NET 程序集中,提取它相当简单。但是,如果您要打开 Word 文档,步骤如下:

  1. 将嵌入的资源提取到字节流中
  2. 将字节流作为“doc”或“docx”文件写入磁盘(可能是临时文件夹?)
  3. 使用 Word 从磁盘打开该文件

...这比仅仅在软件中包含一个 Word 文档要多得多。除非您有非常令人信服的理由使用嵌入式资源执行此操作,否则我只会在应用程序中包含 Word 文档。

如果您想了解更多详情,请查看Aseem Gautamthis question 的回复。

【讨论】:

  • 工作就像一个魅力。我对此做了自己的修改,因为我没有做 C#,但这就是我所做的!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多