Windows窗体应用程序基础知识:Word文档作为项目的一部分(以及如何编辑它)

时间:2014-08-12 20:08:15

标签: vb.net winforms visual-studio-2010

我在Visual Studio中使用Word.Interop命名空间需要一些帮助。我正在使用VB.net,但也欢迎C#答案。我在下面加了几个不同的基本问题。

我创建了一个文档(.docx)并添加到我的项目中,基本上只是一个模板。它包含所有正确的格式,但文本中的字符串变量需要在循环中替换。例如,如果字符串" COMPANYNAME"出现在word文档中,我只是使用正确的公司名称进行编程查找/替换。我在整个文档的其余部分继续这种方式,用适当的替换替换所有变量:

Private Sub CompileInvoicesButton_Click(sender As System.Object, e As System.EventArgs) Handles CompileInvoicesButton.Click
    For Each CompanyInfo In CompanyInfoList
        Dim wordApp As Word.Application
        wordApp = CreateObject("Word.Application")
        Dim wordDoc As Word.Document = wordApp.Documents.Open("C:\Code\...\INVOICE.docx") '<-- Open template.  (how can I get the path of this document no matter where the application is being run from?)
        ' Replace the template text with real data:
        wordDoc.Content.Find.Execute(FindText:="<COMPANY NAME>", ReplaceWith:=CompanyInfo.CompanyName, Replace:=Word.WdReplace.wdReplaceAll)
        wordDoc.SaveAs(folderpath + "\invoice1.docx")
    Next
End Sub

我在这个简单的代码块中遇到了一些问题。

首先,在尝试打开文件时(例如,当我点击CompileInvoices按钮时),我收到一条ReadOnly通知消息,询问我是否要打开该文件的副本,或不。我相信这是因为我的项目所在的目录标记为ReadOnly,模板文档当然位于我的项目目录中。我的想法是,由于文件不大(1页.docx),我会将它包含在我的项目中,就效率而言,这样做会很好,但我没有预见到ReadOnly问题。我该如何解决这个问题?如果这是一个超级基本问题,请道歉。我确实试图改变一些项目设置,但我真的不知道自己在做什么,所以在去火腿之前我会很感激。

第二,也许这与上面有关,但是如何获得我所包含的word文档的动态文件路径?简单地指完整条路径对任何人的机器都不起作用,除了我的。

我认为这两个问题都可能与我包含INVOICE.docx文件的方式/位置有关 在我的项目中。我所做的只是右键单击我的项目,然后转到添加现有项目,并以这种方式添加。

1 个答案:

答案 0 :(得分:1)

使用.Open方法从模板创建新文档,而不是调用.Add来打开模板进行编辑。

要获取当前目录,可以使用Application.StartupPath属性。