如何在VB.NET中引用.dotx资源?(视觉工作室专业版)

如何在VB.NET中引用.dotx资源?(视觉工作室专业版),vb.net,vba,visual-studio-2013,ms-word,embedded-resource,Vb.net,Vba,Visual Studio 2013,Ms Word,Embedded Resource,我有一个程序需要使用扩展名为.dotx的文件。现在我把它作为解决方案中的一个资源。使用下面的代码,而不是直接使用“C:\letterhead.dotx”,我想将我拥有的文件用作“嵌入式资源”。我尝试了以下方法 Dim oWord As Word.Application Dim oDoc As Word.Document oWord = CreateObject("Word.Application") oWord.Visible =

我有一个程序需要使用扩展名为.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

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

  • 将嵌入式资源提取到ByTestStream
  • 将ByTestStream作为“doc”或“docx”文件写入磁盘(可能是临时文件夹?)
  • 用Word从磁盘打开该文件
  • …这比在软件中包含Word文档要多得多。除非您有非常令人信服的理由使用嵌入式资源执行此操作,否则我只会在应用程序中包含Word文档


    如果您想了解更多详细信息,请查看的答案。

    没有简单的解决方案。将文件作为嵌入式资源时,它会在EXE中编译该文件。世界上没有任何应用程序(如Word)会反编译您的exe并查找嵌入式资源,然后打开该文件。您需要做更多的工作,将嵌入式资源写入物理文件,然后使用该文件和位置在Word中打开。如何做到这一点是另一个问题。这并不容易,但只要有一点跳出框框的思考、独创性和谷歌就可以做到。工作起来很有魅力。我做了我自己的变化,因为我没有做C#,但那就是我做的!谢谢