2015-12-16 36 views
0

我使用下面的代碼從.txt文件中插入一個數字,「另存爲」使用該數字作爲名稱的單詞文件,然後完成郵件合併。爲什麼我無法獲取文件以保存在特定位置?

代碼工作正常,直到我不得不切換計算機,所以文件位置改變了......我顯然改變了位置以匹配新計算機的位置。

現在,數字被插入到正確的位置,然後保存對話框打開,但它沒有放在正確的位置,也沒有插入指定的數字。

它試圖保存到這裏無論什麼我更改文件路徑爲: C:\用戶\ Schlechter銀液\ 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

你能手動保存從Word那個位置? – DeanOC

+0

你說'...沒有把它放在正確的位置......' - 它能保存在任何地方嗎?如果是這樣的完整路徑是什麼?保存的語法是正確的。 –

+0

在文件名前有空格嗎?我不確定VBA是否正確地管理空間。也許你可以試試''「」C:\ Users \ Schlechter Ag Liquid \ OneDrive \ BOLs \「&Format(Invoice,」「)&」.docx「」「'? –

回答

0

你爲什麼要格式化發票?如果你想製作一個字符串,爲什麼不直接設置CStr(發票)而不是格式?如果您將一個Integer添加到字符串,它通常會自動將其自身轉換爲字符串...我建議您擺脫格式並將發票留在那裏。所以:

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

至少你可以嘗試...如果它不工作,以及那麼對不起:)

編輯: 也許是可能的,我missunderstood的一部分你的代碼。該文件本身應該被稱爲「invoice-1.docx」?如果是這樣,你需要改變一些東西:

Invoice = "Invoice" & 1 

那麼你可以使用其他的代碼我寫了;)

相關問題