因此,我有一个小型VBA应用程序,该应用程序旨在通过用户表单获取输入,然后将该数据发送到CSV文件。当我从拆分的用户窗体文本框中读取数据时,数据将不会按生成的excel文件中所示的格式进行格式化。我对此进行了一些研究,发现有时另存为CSV会导致这种情况发生,因此我设置了一个脚本以在文本框中显示每行的值,即使我没有将其另存为CSV,额外的字符仍然那里。我希望这里的人可以告诉我为什么会这样。
我尝试创建一个空白CSV文件,然后将数据写入其中
我尝试使用for next循环从用户表单中获取所有数据而不保存它,但字符仍然存在
我尝试打印到文本文件,然后重命名为CSV
代码生成的csv文件看起来很棒而且很完美,但是当我将单元格复制到文本文件时,我得到了多余的字符,这些字符不应该在那里。这是将单元格复制到文本文件时得到的输出
Operation Type Full Name S ID Group ID Email Address Phone Number Extension BO Flag CFlag FFlag MD List Locale
N "Test 1
" "Test.1
" GroupTest "Test1@test.com
" "0000000000
" Yes No No en_US
N "Test 2
" "Test.2
" GroupTest "Test2@test.com
" "0000000000
" Yes No No en_US
N Test 3 Test.3 GroupTest Test3@test.com "0000000000
" Yes No No en_US
由于某种原因,最后一行的格式正确,但是我无法弄清为什么其余的行不正确
对于每个用户,它应该只包含一行,如下所示:
Operation Type Full Name S ID Group ID Email Address Phone Number Extension BO Flag CFlag FFlag MD List Locale
N Test 1 Test.1 GroupTest Test1@test.com 0000000000 Yes No No en_US
N Test 2 Test.2 GroupTest Test2@test.com 0000000000 Yes No No en_US
这就是我从文本框中提取数据的方式
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
If ctrl.Name = "TextBox1" Then 'Full Name
UserForm1.TextBox1.SetFocus
LCount = UserForm1.TextBox1.LineCount
BoxValue = UserForm1.TextBox1.Text
For i = 0 To LCount - 1
BoxValue = Split(UserForm1.TextBox1, Chr(10))(i)
ActiveWorkbook.Sheets("Sheet1").Range("B" & i + 2).value = BoxValue
Next i
End If
End If
Next ctrl
这一定与我从文本框中提取数据的方式有关,但是我找不到问题。
答案 0 :(得分:1)
所以事实证明,我要做的就是使用不同的分割定界符
我从: BoxValue = Split(UserForm1.TextBox1, Chr(10))(i)
收件人: BoxValue = Split(UserForm1.TextBox4, vbCrLf )(i)
这将导致split函数在每次返回时进行拆分,现在我的数据已被完美格式化。
希望这可以帮助某个人