2015-12-16 1 views
0

J'utilise le code ci-dessous pour insérer un numéro à partir d'un fichier .txt, "enregistrer sous" le fichier texte en utilisant ce numéro comme nom, puis effectuer une opération de fusion et publipostage.Pourquoi ne puis-je pas enregistrer un fichier dans un endroit spécifique?

Le code a bien fonctionné jusqu'à ce que je devais changer d'ordinateur, donc les emplacements de fichiers ont changé ... J'ai évidemment changé les emplacements pour qu'ils correspondent à ceux du nouvel ordinateur.

Maintenant, le numéro est inséré au bon endroit, puis la boîte de dialogue de sauvegarde s'ouvre mais ne le place pas au bon endroit et n'insère pas le numéro spécifié.

Il essaie de sauver ici, peu importe ce que je change le chemin du fichier à être: 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 

Il dit que l'erreur est dans ce ligne, mais je n'arrive pas à comprendre ce qui ne va pas avec.

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

Toute aide serait grandement appréciée.

+1

Pouvez-vous enregistrer manuellement à cet endroit à partir de Word? – DeanOC

+0

Vous dites "... ne le place pas au bon endroit ..." - le sauvegarde-t-il n'importe où? si oui, quel est le chemin complet? La syntaxe de la sauvegarde est correcte. –

+0

Aviez-vous déjà des espaces dans le nom de fichier? Je ne suis pas sûr si VBA gère correctement les espaces dans le chemin. Peut-être que vous pourriez essayer "" "C: \ Utilisateurs \ Schlechter Ag Liquid \ OneDrive \ BOLs \" & Format (Facture, "") & ".docx" "" '? –

Répondre

0

Pourquoi formatez-vous la facture? Si vous voulez en faire une chaîne, pourquoi ne pas simplement mettre CStr (Facture) au lieu de Format? Et si vous ajoutez un entier à une chaîne, il se convertit automatiquement en une chaîne automatiquement ... Je vous conseille de vous débarrasser du format et de laisser simplement la facture là. Alors:

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

au moins vous pouvez essayer ... Si cela ne fonctionne pas, eh bien je suis désolé :)

EDIT: Il pourrait être possible que je missunderstood une partie de votre code. Le fichier lui-même devrait être appelé "facture-1.docx"? Si oui, vous devez changer quelque chose:

Invoice = "Invoice" & 1 

Ensuite, vous pouvez utiliser l'autre code je l'ai écrit;)