ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 从文件夹中读取所有的txt文件,并且将sheet名改成txt文件名,为什么会出现命名重复

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-9 21:08 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 目录()
  2.     Set Mapp = CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件目录:", &H1)
  3.     If Not Mapp Is Nothing Then ActiveCell.Value = Mapp.self.Path

  4. End Sub
  5. Sub 导入Txt()
  6.     Dim cPath$, cFile$, n%, Arr, Brr, Crr()
  7.     Dim wb As Workbook, sh As Worksheet
  8.     If Dir(Range("c2").Value, 16) <> "" Then
  9.         cPath = Range("c2").Value
  10.         If Right(cPath, 1) <> "" Then cPath = cPath & ""
  11.     Else
  12.         cPath = ThisWorkbook.Path & ""
  13.     End If
  14.     cFile = Dir(cPath & "*.txt")
  15.     Application.ScreenUpdating = False
  16.     Set wb = Workbooks.Add
  17.     With wb
  18.         Do While cFile <> ""
  19.             Open cPath & cFile For Input As #1
  20.             Arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), Chr(10))
  21.             Close #1
  22.             ReDim Crr(0 To UBound(Arr), 0 To 10)
  23.             For i = 0 To UBound(Arr)
  24.                 If Arr(i) <> "" Then
  25.                     Brr = Split(Arr(i), Chr(9))
  26.                     For j = 0 To UBound(Brr)
  27.                         Crr(i, j) = Brr(j)
  28.                     Next
  29.                 End If
  30.             Next
  31.             n = n + 1
  32.             If n > .Sheets.Count Then
  33.                 Set sh = .Sheets.Add(After:=Sheets(n - 1))
  34.             Else
  35.                 Set sh = .Sheets(n)
  36.             End If
  37.             sh.Range("a1").Resize(UBound(Arr) + 1, 11).Value = Crr
  38.             
  39.             sh.Name = Split(cFile, " ")(0)
  40.             cFile = Dir
  41.         Loop
  42.         If Dir(Range("c3").Value, 16) <> "" Then
  43.             cPath = Range("c3").Value
  44.             If Right(cPath, 1) <> "" Then cPath = cPath & ""
  45.         End If
  46.         .SaveAs cPath & Format(Now, "yyyymmdd hhmmss")
  47.     End With
  48.     Application.ScreenUpdating = True
  49.     ThisWorkbook.Close
  50. End Sub
复制代码
为什么会出现:'命名重复'
求助大佬

导入Txt.rar

18.11 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-9 23:19 | 显示全部楼层
求大佬指导

TA的精华主题

TA的得分主题

发表于 2019-6-10 08:42 | 显示全部楼层
cPath = ThisWorkbook.Path & ""
应该是
cPath = ThisWorkbook.Path & "/"
否则你取到的全是 "" 空,所以文件名全一样。其他的没看
小技巧,调试过程中,多把中间结果用msgbox输出就知道原因了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-20 06:42 , Processed in 0.035721 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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