ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 741|回复: 9

[求助] 多个TXT文档导入到一个sheet中出错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-19 18:16 | 显示全部楼层 |阅读模式
多个TXT文档导入.rar (9.09 KB, 下载次数: 14)
Sub 导入()
Dim mypath$, myfile$, fn%
mypath = ThisWorkbook.Path & "\"
myfile = Dir(mypath & "*.txt")
fn = FreeFile
Sheet1.Cells.ClearContents
Do While myfile <> ""
  Open mypatn & myfile For Input As #fn
     s = Split(StrConv(InputB(LOF(fn), fn), vbUnicode), vbCrLf)
  Close #fn
  i = i + 1
  Cells(i, 1).Resize(UBound(s), 1) = Application.Transpose(s)
  myfile = Dir
Loop
End Sub
提示未找到文件,请老师指教

TA的精华主题

TA的得分主题

发表于 2020-2-19 18:39 | 显示全部楼层
open mypatn 中,mypatn是什么东东?强制变量声明语句为什么不用?!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-19 20:28 | 显示全部楼层
谢谢2楼,改了,也没达到想要的效果,
调试了很多次,都没整好,
结果是:TXT文档是各小组上传的合计数,按文档序号排序导入到sheet1里合计汇总,
求帮助

TA的精华主题

TA的得分主题

发表于 2020-2-19 20:58 | 显示全部楼层
本帖最后由 liulang0808 于 2020-2-19 21:02 编辑

s = Split(StrConv(InputB(LOF(fn), fn), vbUnicode), vbCrLf)
用这个,需要先看下文件编码方式的,楼主的文本编码方式不是unicode,而是utf-8。有可能出现乱码的
Sub 导入()
Dim mypath$, myfile$, fn%
mypath = ThisWorkbook.Path & "\"
myfile = Dir(mypath & "*.txt")
fn = FreeFile
Sheet1.Cells.ClearContents
Do While myfile <> ""
  Open mypath & myfile For Input As #fn
     s = Split(StrConv(InputB(LOF(fn), fn), vbUnicode), vbCrLf)
  Close #fn
  i = i + 1
  Cells(i, 1).Resize(UBound(s) + 1, 1) = Application.Transpose(s)
  myfile = Dir
Loop

End Sub


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-19 23:56 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2020-2-20 13:15 编辑

Sub xmlhttpread()
   Dim FileName, ar, xx, y, i: [a:iv] = ""
   Set xx = CreateObject("Microsoft.XMLHTTP")
   FileName = Dir(ThisWorkbook.Path & "\*.txt")
   Do Until Len(FileName) = 0
       y = xx.Open("Get", ThisWorkbook.Path & "\" & FileName, False)
       xx.send: y = xx.responseText
       ar = Application.Transpose(Split(y, vbCrLf))
       i = i + 1: Cells(1, i).Resize(UBound(ar)) = ar
       FileName = Dir
   Loop
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-20 00:05 | 显示全部楼层
多个文本文件导入工作表,直接使用Power Query功能就可以了,不需要任何代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 10:12 | 显示全部楼层
liulang0808 发表于 2020-2-19 20:58
s = Split(StrConv(InputB(LOF(fn), fn), vbUnicode), vbCrLf)
用这个,需要先看下文件编码方式的,楼主的 ...

Sub 合计汇总()
Dim mypath$, myfile$
Dim j%, i%, arr, brr, crr(1 To 44, 1 To 6)  '() As String
mypath = ThisWorkbook.Path & "\"
myfile = Dir(mypath & "\*.txt")
On Error Resume Next
Do While myfile <> ""
  Open mypath & myfile For Input As #1
     arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
     For i = 0 To UBound(arr)
     'If arr(i) <> "" Then
       If Len(Trim(arr(i))) <> 0 Then
        'brr = Split(arr(i), ",")
         brr = Split(Trim(arr(i)), ",")
        m = 0
        m = m + 1
         For j = 0 To UBound(brr)
        crr(m, j + 1) = brr(j)
      Next
       End If
  Next
        With Worksheets("sheet1")
    j = 0
    For Each x In Array(3, 4, 6, 7)
      j = j + 1
        Cells(3, x).Resize(UBound(crr), 1) = Application.Index(crr, 0, j)
         Next
         End With
         Close #1
myfile = Dir
Loop
MsgBox "ok"
End Sub
****
首先感谢版主一直以来的热心帮助,我调试了好久,导入后全部在一行里,我要的结果是导入到各小组,附件我重新上传

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 10:15 | 显示全部楼层
多个TXT文档导入.rar (12.51 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2020-2-22 10:51 | 显示全部楼层

Option Explicit

Sub test()
  Dim arr, pth, f, m, pos, t, i, j, max
  pth = ThisWorkbook.Path & "\"
  f = Dir(pth & "*.txt")
  pos = Array(2, 3, 5, 6)
  ReDim brr(99, 1 To 6)
  Do While f <> ""
    m = Val(Left(Right(f, 6), 2))
    If max < m Then max = m
    Open pth & f For Input As #1
    arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbNewLine)
    Close #1
    For i = 0 To UBound(arr, 1)
      t = Split(arr(i), ",")
      For j = 0 To UBound(t)
        brr(m, pos(j)) = brr(m, pos(j)) + Val(t(j))
      Next
    Next
    f = Dir
  Loop
  For i = 1 To max
    For j = 0 To UBound(pos)
      brr(0, pos(j)) = brr(0, pos(j)) + brr(i, pos(j))
    Next
    brr(i, 1) = brr(i, 2) + brr(i, 3)
    brr(0, 1) = brr(0, 1) + brr(i, 1)
    brr(i, 4) = brr(i, 5) + brr(i, 6)
    brr(0, 4) = brr(0, 4) + brr(i, 4)
  Next
  [b2].Resize(max + 1, UBound(brr, 2)) = brr
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 11:36 | 显示全部楼层

你做出来我看懂了,自己做就是迷宫,非常感谢楼上各位
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 08:38 , Processed in 0.047299 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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