Почему я не могу получить файл для сохранения в определенном месте?
Я использую код ниже, чтобы вставить число из файла.txt, "сохранить как" файл слова, используя это число в качестве имени, а затем выполнить слияние по почте.
Код работал нормально до тех пор, пока мне не пришлось переключать компьютеры, поэтому расположение файлов изменилось... Я, очевидно, изменил расположение, чтобы соответствовать расположению нового компьютера.
Теперь номер вставляется в правильное место, затем открывается диалоговое окно сохранения, но оно не помещает его в нужное место и не вставляет указанное число.
Он пытается сохранить его здесь независимо от того, какой путь к файлу я изменил: C:\Users\Schlechter Ag Liquid\OneDrive\BOLTemplate\
Sub CommandButton1_Click()
Invoice = System.PrivateProfileString("C:\Users\Schlechter Ag Liquid\OneDrive\BOLTemplate\" & _
"invoice-number.txt", "InvoiceNumber", "Invoice")
If Invoice = "" Then
Invoice = 1
Else
Invoice = Invoice + 1
End If
System.PrivateProfileString("C:\Users\Schlechter Ag Liquid\OneDrive\BOLTemplate\" & _
"invoice-number.txt", "InvoiceNumber", "Invoice") = Invoice
' Insert the number in the document
ActiveDocument.Bookmarks("Invoicenan").Range.InsertBefore Format(Invoice, "")
ActiveDocument.SaveAs FileName:= _
"C:\Users\Schlechter Ag Liquid\OneDrive\BOLs\" & Format(Invoice, "") & ".docx"
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Users\Schlechter Ag Liquid\OneDrive\BOLTemplate\Customer Database.accdb" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\Schlechter Ag Liquid\OneDrive\BOLTemplate\Customer Database.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=6;Jet OLE" _
, SQLStatement:="SELECT * FROM `report1 (1)`", SQLStatement1:="", SubType _
:=wdMergeSubTypeAccess
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
WordBasic.MailMergeFindEntry
End Sub
Там написано, что ошибка в этой строке, но я не могу понять, что с ней не так.
ActiveDocument.SaveAs FileName:= _
"C:\Users\Schlechter Ag Liquid\OneDrive\BOLs\" & Format(Invoice, "") & ".docx"
Любая помощь будет принята с благодарностью.
1 ответ
Почему вы форматируете счет-фактуру? Если вы хотите сделать из него строку, почему бы вам просто не установить CStr(Invoice) вместо Format? И если вы добавляете Integer к строке, он обычно автоматически конвертируется в строку... Я бы посоветовал вам избавиться от формата и просто оставить Invoice там. Так:
ActiveDocument.SaveAs FileName:= _
"C:\Users\Schlechter Ag Liquid\OneDrive\BOLs\" & Invoice & ".docx"
по крайней мере, вы можете попробовать это... Если это не сработает, ну тогда извините:)
РЕДАКТИРОВАТЬ: Может быть, я неправильно понял часть вашего кода. Сам файл должен называться invoice-1.docx? Если это так, вам нужно что-то изменить:
Invoice = "Invoice" & 1
Тогда вы можете использовать другой код, который я написал;)