2015-12-16 3 views
0

Я использую приведенный ниже код, чтобы вставить номер из .txt-файла, «сохранить-как» файл слова, используя этот номер в качестве имени, а затем завершить слияние.Почему я не могу сохранить файл в определенном месте?

Код работал нормально до тех пор, пока мне не пришлось переключать компьютеры, поэтому менялось расположение файлов ... Я, очевидно, изменил местоположения так же, как и на новом компьютере.

Теперь номер вставлен в нужное место, затем открывается диалоговое окно сохранения, но оно не помещается в нужное место и не вставляет указанный номер.

Он пытается не сохранить его здесь, независимо от того, что я изменить путь к файлу будет: C: \ Users \ Schlechter Ag жидкость \ 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

Вы можете вручную сохранить в этом месте из Слова? – DeanOC

+0

Вы говорите, что «... не помещает его в нужное место ...» - он сохраняет его где угодно? если да, то какой полный путь? Правильный синтаксис сохранения. –

+0

У вас были пробелы в файле? Я не уверен, что VBA правильно управляет пробелами. Возможно, вы могли бы попробовать '' "" C: \ Users \ Schlechter Ag Liquid \ OneDrive \ BOLs \ "& Format (Invoice," ") &" .docx "" "'? –

ответ

0

Почему вы форматируете счет? Если вы хотите сделать строку из нее, почему бы вам просто не установить CStr (Invoice) вместо Format? И если вы добавите целое число в строку, оно нормально преобразуется в строку автоматически ... Я бы посоветовал вам избавиться от формата и просто оставить там счет. Итак:

ActiveDocument.SaveAs FileName:= _ 
    "C:\Users\Schlechter Ag Liquid\OneDrive\BOLs\" & Invoice & ".docx" 

по крайней мере, вы можете попробовать его ... Если он не работает, ну тогда я извиняюсь :)

EDIT: Это может быть возможно, что я missunderstood часть ваш код. Сам файл следует называть «invoice-1.docx»? Если так что вам нужно что-то изменить:

Invoice = "Invoice" & 1 

Тогда вы могли бы использовать другой код я написал;)

Смежные вопросы