设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 7375|回复: 14
打印 上一主题 下一主题

[基础应用] Excel批量导入TXT数据问题

[复制链接]
跳转到指定楼层
1#
发表于 2008-8-21 02:12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问:现在我有近千个TXT文本数据,0001.txt~0999.txt,每一个都需要单独导入新的Excel工作表,数据——导入外部数据——导入数据,然后设置一些,完成之后,另存为0001.xls~0999.xls。

每一个的过程虽然很简单都一模一样,但是我现在有近千个,那还不累死人啦?!请问有什么批处理的方法吗?用宏可以吗?如果可以的话请看下面我录制的语句,需要修改什么地方?!据说把路径文件名改成变量就行了?怎样修改,谢谢!

Sub Macro1()
'
' Macro1 Macro
' 宏由 User 录制,时间: 2008-8-21
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;D:\xxx\0001.txt" _
        , Destination:=Range("A1"))
        .Name = "AIDC-0121"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWorkbook.SaveAs Filename:= _
        "D:\xxx\0001.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-8-21 10:23:39 | 只看该作者
Sub Macro1()
on error resume next
'未作测试
For i=1 to 999
filename=format(i,"0000")
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;D:\xxx\" & filename & ".txt" _
        , Destination:=Range("A1"))
        .Name = "AIDC-0121"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWorkbook.SaveAs Filename:= _
        "D:\xxx\" & filename & "..xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
next
End Sub
3#
发表于 2008-8-21 11:42:31 | 只看该作者
For i=1 to 999换成For i=0 to 999  行吗?
4#
发表于 2008-8-22 14:27:39 | 只看该作者
Sub test()
On Error Resume Next
Set fs = Application.FileSearch
With fs
    .LookIn = ThisWorkbook.Path
    .Filename = "*.txt"
    If .Execute > 0 Then
       If MsgBox("本文件夹下有" & .FoundFiles.Count & " 文件需要导入,确认导入吗?", vbYesNo, "导入确认") = vbNo Then Exit Sub
        For i = 1 To .FoundFiles.Count
            filenameStr = Mid(Left(.FoundFiles(i), Len(.FoundFiles(i)) - 4), Len(ThisWorkbook.Path) + 2)
            
         Workbooks.Add
      
                With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & ThisWorkbook.Path & "\" & filenameStr & ".txt", Destination:= _
        Range("A1"))
        .Name = filenameStr
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
   
         ChDir ThisWorkbook.Path
          ActiveWorkbook.SaveAs Filename:= _
         ThisWorkbook.Path & "\" & filenameStr & ".xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
      
            
        Next i
    Else
        MsgBox "没有需要导入的文件"
    End If
End With
End Sub
5#
 楼主| 发表于 2008-8-22 18:04:25 | 只看该作者

回复 4# 的帖子

版主老大,弱弱的问一下,在哪里设置文件的导入路径啊?怎么导入??[:30]
6#
 楼主| 发表于 2008-8-22 19:09:00 | 只看该作者
老大,好像因为那句ThisWorkbook.Path 所以必须先在需要转换的目录打开或新建一个工作簿,然后才可以吧。。。我是这样才行的

请问,可以把那句ThisWorkbook.Path 改成绝对路径吗?比如C:\xxxx

点击这里给我发消息

7#
发表于 2008-8-23 00:00:12 | 只看该作者
这个.....这个......
貌似可以直接用EXCEL打开TXT
8#
发表于 2008-8-25 10:04:15 | 只看该作者
原帖由 dostpy 于 2008-8-22 19:09 发表
老大,好像因为那句ThisWorkbook.Path 所以必须先在需要转换的目录打开或新建一个工作簿,然后才可以吧。。。我是这样才行的

请问,可以把那句ThisWorkbook.Path 改成绝对路径吗?比如C:\xxxx


实践是检验真理的唯一标准,自己动手替换试试就知道了。
9#
 楼主| 发表于 2008-8-25 18:09:27 | 只看该作者
版主这段程序写得很好啊,有很多值得我这个新手回味、学习的地方,谢谢liwen版主不仅 授人以鱼,而且最重要的是授人以渔!太感谢了!
10#
 楼主| 发表于 2008-8-25 19:09:15 | 只看该作者
liwen版主,你真是太帅了!!!刚才用你这段程序修改了一下,又搞定一个类似的任务,再一次衷心感谢!![:50]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-12 01:27 , Processed in 0.103949 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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