2017-12-22 14 views
-1

以前作成して別の関数で変更した単語文書を保存する機能を作成しましたが、エラーが送信されます:これは有効なファイル名ではありません。 これは私のコードです:保存するにはVBを使用してUFTで単語文書を保存

Set obj_Word = CreateObject("Word.Application") 
obj_Word.Visible = True 
Set doc = obj_Word.Documents.Open("C:\Evidencias3.docx") 
NombreDocumento = DataTable.Value("Preguntas","Global") 

Sub SaveEvidences() 
obj_Word.Visible = True 
    doc.SaveAs("C:\Evidencias_"& NombreDocumento &".docx") 
    obj_Word.Quit 
    Set obj_Word = Nothing 
End Sub 

私はあなたが保存する前に、ファイル名を一掃しようとすることができます任意の助けを感謝や

+2

NombreDocumentoから得られる文字列の値は何ですか? –

+0

なぜこのタグはVB6ですか?この製品はマクロスクリプト言語としてVBScriptを使用していませんか? – Bob77

答えて

0

をお勧めします:

Public Function CleanFileName(ByVal sIn As String) As String 
    Dim sOut As String, sIllegalChars As String 
    sIllegalChars = "\/:*|?<>" + Chr(34) 
    sOut = sIn 
    For q = 1 To Len(sIllegalChars) 
     sOut = Replace(sOut, Mid(sIllegalChars, q, 1), "_") 
    Next 
    CleanFileName = sOut 
End Function 

使用法:

doc.SaveAs(CleanFileName("C:\Evidencias_"& NombreDocumento &".docx")) 

参考:MSDN - Naming Files, Paths, and Namespaces

+0

ありがとう!!これは私をとても助けます。 –

+0

@ArmandoZaldivar:これはあなたを助けてくれたことをうれしく思っています。他の人も同様に役立つと思われるので、答えをマークすることを検討してください:) – deblocker

0

おそらく問題はラインである:

NombreDocumento = DataTable.Value("Preguntas","Global") 

ないコードに精通し、それがNULL値を返すことは可能でしょうか?もしそうなら、あなたはそれを空の文字列を追加しようとすることができます:

NombreDocumento = DataTable.Value("Preguntas","Global") & "" 

いずれかの方法、私はコードをデバッグして構築されたファイル名が実際にあるものを見るでしょう。多分それは明らかになるでしょう。

関連する問題