2017-08-28 54 views
0

嗨所有有人可以帮助您如何创建文本文件使用文本框的多行值作为文件名?使用多行文本框值创建一个文本文件作为文件名vba

我有一个用户窗体中的多行文本框,我在其中输入多个值。我的代码可以创建文本文件,如果我只输入一个值,但如果我输入2或更多没有创建。你能帮我确定我的代码中缺少哪些代码来创建文本文件,并且文件的名称应该是多行文本框中的每个值?我已经尝试过搜索,但看起来没有像我担心的那样主题。预先感谢您的任何帮助。

以下是我的代码。

Private Sub CREATE_REQ_Click() 

    Dim sExportFolder, sFN 
    Dim oFS As Object 
    Dim oTxt As Object 

    sExportFolder = TextBox1 ' "D:\TEST\REQ_FILES_CREATED_HERE" 

    Set oFS = CreateObject("Scripting.Filesystemobject") 
    For Each strLine In TextLogistic 

    'Add .txt to the article name as a file name 

    sFN = "-" & TextLogistic.Value & ".req" 

Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & ListBox1 & sFN, 2, True) 
    oTxt.Write combo1.Value 
    oTxt.Close 
    Next 

End Sub 

enter image description here

+0

使用斯普利特()创建从文本框内容的数组,然后在数组循环,并创建自己的文件。 –

+0

@TimWilliams:'Split()'是什么;)@sayjon:在文本编辑器(例如Notepad ++)中复制多行文本并使非可打印字符可见,然后您会看到问题。用'Replace()'或者Tim建议'Split()',然后用'Join()'去除字符。 – BitAccesser

+0

可能'vbLf'就是你需要的 –

回答

1
Here's the solution for the above issue. 

Private Sub CREATE_REQ_Click() 

Dim sExportFolder, sFN 
Dim oFS As Object 
Dim oTxt As Object 
Dim v As Variant 
Dim vlist As Variant 
Dim key As Variant 


    Set oFS = CreateObject("Scripting.Filesystemobject") 
    vlist = Split(Replace(TextLogistic, Chr(13), ""), Chr(10)) 

For Each v In vlist 
    key = Trim(v) 

    sFN = "-" & key & ".req" 
    Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & ListBox1 & sFN, 2, True) 
    oTxt.Write combo1.Value 
    oTxt.Close 

Next 

End Sub 
+0

不错!赏金的一些提示;)。定义所有的vartypes表达式,'Dim sExportFolder,sFN'get implict variant,但应该是字符串(如'key'和''FN')。在每个模块的顶部使用'Explicit Explicit'(所有变量必须声明)以防止输入错误。不需要'替换(TextLogistic,Chr(13),“”)',只需要'Split(TextLogistic,Chr(13)&Chr(10),“”))。最后一项:检查'sExportFolder&“\”&ListBox1&sFN'for [illegal chars](https://stackoverflow.com/questions/1976007/what-c​​haracters-are-forbidden-in-windows-and-linux-directory -names).. – BitAccesser

+0

嗨@BitAccesser是否可以重写我的答案,使其对我更清楚?我在Vba中真的很新,这就是为什么如果它工作,我不知道要检查语法是错误还是正确的。如果我看到正确的语法,它会给我更多的启发。谢谢。 – sayjon