使用多行文本框值作为文件名vba创建文本文件

使用多行文本框值作为文件名vba创建文本文件,vba,Vba,大家好,有人可以帮助我们如何使用文本框的多行值作为文件名来创建文本文件吗 我在userform中有一个多行文本框,在其中输入多个值。我的代码可以创建文本文件,如果我只输入一个值,但如果我输入2个或更多值,则不会创建任何内容。您能帮我确定我的代码中缺少哪些代码只是为了创建文本文件,并且文件名应该是多行文本框中的每个值吗?我已经试过搜索了,但似乎没有什么话题和我关心的一样。提前感谢您的帮助 下面是我的代码 Private Sub CREATE_REQ_Click() Dim sExport

大家好,有人可以帮助我们如何使用文本框的多行值作为文件名来创建文本文件吗

我在userform中有一个多行文本框,在其中输入多个值。我的代码可以创建文本文件,如果我只输入一个值,但如果我输入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

使用Split()从文本框内容创建一个数组,然后循环该数组并创建文件。@TimWilliams:
Split()
关于什么;)@sayjon:在文本编辑器(例如记事本++)中复制多行文本,并使不可打印的字符可见,然后您就会看到问题。使用
Replace()
或按照Tim建议的
Split()
删除字符,然后
Join()
。您可能需要
vbLf
need@TimWilliams:对不起,不小心按了回车键;),但它应该是
vbCrLf
?为了安全起见,我会先
Replace(myString,Chr(10),vbNullString)
然后
Replace(myString,Chr(13),vbNullString)
。我是Vba新手,能告诉我怎么做吗,或者给我举个例子。。这对我来说很复杂。谢谢你…很好!一些赏金的提示;)。定义所有vartypes explict、
Dim sExportFolder、sFN
get implict variant,但应为字符串(如
key
sFN
)。在每个模块顶部使用
选项Explicit
(必须声明所有变量),以防止输入错误。无需
替换(TextLogistic,Chr(13),”)
,只需
拆分(TextLogistic,Chr(13)和Chr(10),”)
。最后一个:检查
sExportFolder&“\”&ListBox1&sFN
中的..Hi@BitAccesser您是否可以重写我的答案以便我更清楚?我对Vba真的很陌生,这就是为什么如果它是工作,我不知道检查语法是否错误或正确的原因。如果我看到正确的语法,它会给我更多启发。非常感谢。
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