【发布时间】: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