Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2237|回复: 4

[已解决]如何修改VBA,使读入后的数据在单元格内显示为非文本格式

[复制链接]
发表于 2017-9-30 08:41 | 显示全部楼层 |阅读模式
本帖最后由 lijian8003 于 2017-9-30 11:23 编辑
  1. Sub 读入()
  2. Sheets("1").Select
  3. Application.DisplayAlerts = False
  4. Dim s() As String
  5. Dim s2() As String
  6. On Error Resume Next
  7. Open ThisWorkbook.Path & "\文本\1.txt" For Input As #1
  8. s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
  9. Close #1
  10.     For x = 0 To UBound(s)
  11.          s2 = Split(s(x), " ")
  12.          ss = UBound(s2)
  13.        Range("b" & x + 2).Resize(, ss + 1) = s2
  14.     Next
  15. Application.DisplayAlerts = True
  16. End Sub
复制代码

上述VBA代码读入txt文本数据后,各单元格内的数据显示为文本格式。如何修改VBA代码,使其读入后的数据,在各单元格显示为非文本格式?
最佳答案
2017-9-30 10:57
lijian8003 发表于 2017-9-30 09:32
as string去掉后,什么数据也读入不了

加入一个数组过渡吧,还是不太清楚怎么对分解字符的数组声明
Sub 导入()
Sheets("1").Select
Application.DisplayAlerts = True
Dim s() As String
Dim s2() As String
Dim arr(1 To 1, 1 To 100)
On Error Resume Next
Open ThisWorkbook.Path & "\文本\1.txt" For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
    For x = 0 To UBound(s)
        s2 = Split(s(x), " ")
      For y = 0 To UBound(s2)
        arr(1, y + 1) = s2(y)
      Next
        ActiveSheet.Cells(x + 2, "B").Resize(, UBound(s2) + 1) = arr
    Next
Application.DisplayAlerts = True
End Sub

读入文本数据.zip

16.78 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-9-30 09:17 | 显示全部楼层
  • Dim s2() As String
    这个把as string去掉看看
回复

使用道具 举报

 楼主| 发表于 2017-9-30 09:32 | 显示全部楼层
0126 发表于 2017-9-30 09:17
  • Dim s2() As String
    这个把as string去掉看看

  • as string去掉后,什么数据也读入不了
    回复

    使用道具 举报

    发表于 2017-9-30 10:57 | 显示全部楼层    本楼为最佳答案   
    lijian8003 发表于 2017-9-30 09:32
    as string去掉后,什么数据也读入不了

    加入一个数组过渡吧,还是不太清楚怎么对分解字符的数组声明
    Sub 导入()
    Sheets("1").Select
    Application.DisplayAlerts = True
    Dim s() As String
    Dim s2() As String
    Dim arr(1 To 1, 1 To 100)
    On Error Resume Next
    Open ThisWorkbook.Path & "\文本\1.txt" For Input As #1
    s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
    Close #1
        For x = 0 To UBound(s)
            s2 = Split(s(x), " ")
          For y = 0 To UBound(s2)
            arr(1, y + 1) = s2(y)
          Next
            ActiveSheet.Cells(x + 2, "B").Resize(, UBound(s2) + 1) = arr
        Next
    Application.DisplayAlerts = True
    End Sub
    回复

    使用道具 举报

     楼主| 发表于 2017-9-30 11:08 | 显示全部楼层
    0126 发表于 2017-9-30 10:57
    加入一个数组过渡吧,还是不太清楚怎么对分解字符的数组声明
    Sub 导入()
    Sheets("1").Select

    感谢,能解决问题
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

    GMT+8, 2024-5-17 01:12 , Processed in 0.248534 second(s), 10 queries , Gzip On, Yac On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表