#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. В итоге я создал несколько текстовых полей и ввел в них путь. Я увидел, что изначально допустил ошибку в пути к файлу, теперь это работает. Спасибо!