为什么不能正确格式化CSV文件?

时间:2019-08-01 21:00:44

标签: excel csv export-to-csv

因此,我有一个小型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

这一定与我从文本框中提取数据的方式有关,但是我找不到问题。

1 个答案:

答案 0 :(得分:1)

所以事实证明,我要做的就是使用不同的分割定界符

我从: BoxValue = Split(UserForm1.TextBox1, Chr(10))(i)

收件人: BoxValue = Split(UserForm1.TextBox4, vbCrLf )(i)

这将导致split函数在每次返回时进行拆分,现在我的数据已被完美格式化。

希望这可以帮助某个人