Создание относительного пути к файлу для шаблона Word

#vb.net

#vb.net

Вопрос:

Я печатаю счет с данными, собранными из текстовых полей в моей форме. На моем компьютере это работает идеально, но я делаю это для своего отца, и когда я отправляю его ему, путь к файлу неверен. Я скажу ему, где сохранить файл, мне просто нужно иметь относительный путь к файлу для этого местоположения. Если бы кто-нибудь мог помочь мне создать относительный путь к файлу в общем расположении, это было бы здорово! Это код, который я использую для печати:

  Dim oWord As Word.Application
        Dim oDoc As Word.Document

        'Start Word and open the document template.
        oWord = CreateObject("Word.Application")
        oWord.Visible = True
        oDoc = oWord.Documents.Add("C:UsersDaveOneDriveDocumentsvisual studio 2015ProjectsComputer RepairComputer RepairbinDebugComputerTemplate.dotx")
        oDoc.Bookmarks.Item("Invoice").Range.Text = InvoiceID.Text
        oDoc.Bookmarks.Item("Name").Range.Text = Namei.Text
        oDoc.Bookmarks.Item("Date").Range.Text = Datext.Text
        oDoc.Bookmarks.Item("Phone").Range.Text = Phone.Text
        oDoc.Bookmarks.Item("Address").Range.Text = Address.Text
        oDoc.Bookmarks.Item("City").Range.Text = City.Text
        oDoc.Bookmarks.Item("Work").Range.Text = Work.Text
        oDoc.Bookmarks.Item("Problem").Range.Text = Problem.Text
        oDoc.Bookmarks.Item("Total").Range.Text = Total.Text
        oDoc.Bookmarks.Item("Discount").Range.Text = Discount.Text
        oDoc.Bookmarks.Item("Notes").Range.Text = Notes.Text
  

Комментарии:

1. Приложение. StartupPath или Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

Ответ №1:

Проблема в том, что вы используете прямой путь, который, конечно, не существует на другом компьютере.

Как предложил @Jimi, используйте что-то вроде Application.StartupPath . Пример:

     Dim oDocFolder As String = Application.StartupPath
    Dim oDocFile As String = "ComputerTemplate.dotx"
  

Затем используйте:

 oDoc = oWord.Documents.Add(IO.Path.Combine(oDocFolder, oDocFile))
  

Надеюсь, это поможет.

Комментарии:

1. Хорошо, теперь он говорит, что не может найти файл. В каком расположении должен находиться мой файл?

2. Ваш исходный пример показал, что ComputerTemplate.dotx в том же месте, что и ваше приложение, ваш *.exe файл, мой опубликованный ответ предполагает то же самое.

3. Я попытался переместить файл из папки debug и поместить его в папку debug, и я все еще получаю сообщение об ошибке: извините, мы не смогли найти ваш файл. Был ли он перемещен, переименован или удален? Есть ли какой-либо другой способ сделать это?

4. Возможно, добавьте точку останова, чтобы убедиться, что Application.StartupPath находится там, где вы ожидаете, и содержит ваш *.dotx файл.

5. В итоге я создал несколько текстовых полей и ввел в них путь. Я увидел, что изначально допустил ошибку в пути к файлу, теперь это работает. Спасибо!