博客
关于我
使用VBA合并多个TXT文件内容到Excel的不同列的实现
阅读量:160 次
发布时间:2019-02-27

本文共 2530 字,大约阅读时间需要 8 分钟。

目录

需求

某一文件夹下有多个txt文件,文件里每行是一个内容,类似:

data1.txt

12345

data2.txt

abcde

最终需要把这些txt内容复制到excel里,并存在同一个sheet的不同列里

编码

Sub AddWorkbook()    'sub表示一个过程    '声明一个变量    Dim isSheetOk  As Boolean    '调用一个叫做copyTXT2Sheet的函数    isSheetOk = copyTXT2Sheet()    If Not isSheetOk Then        Exit Sub    End If    ' 保存结果    saveResult            End SubFunction copyTXT2Sheet() As Boolean '函数返回一个布尔值,函数返回值即  函数名=xxx 则表示返回了 xxx    Dim resultName As String    Dim xFile As String    Dim xFileDialog As FileDialog    Dim xToBook As Workbook    Dim xWb As Workbook    Dim xFiles As New Collection    '文件选择弹窗    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)    xFileDialog.AllowMultiSelect = False    xFileDialog.Title = "选择包含txt的文件夹"    If xFileDialog.Show = -1 Then        xStrPath = xFileDialog.SelectedItems(1)    End If    If xStrPath = "" Then        copyTXT2Sheet = False        Exit Function    End If    If Right(xStrPath, 1) <> "\" Then        xStrPath = xStrPath & "\"    End If    '获取文件夹下的*.txt文件    xFile = Dir(xStrPath & "*.txt")    If xFile = "" Then        MsgBox "No files found", vbInformation, "Kutools for Excel"        copyTXT2Sheet = False        Exit Function    End If    Do While xFile <> ""        xFiles.Add xFile '读取到的文件路径存入集合        xFile = Dir() ' 使用Dir不断访问下个文件,直到没文件    Loop    ' 新建一个excel文件    Set xToBook = Workbooks.Add    If xFiles.Count > 0 Then        For i = 1 To xFiles.Count            '读取txt转换成excel,使用utf编码打开(解决中文乱码问题)            Workbooks.OpenText Filename:=xStrPath & xFiles.Item(i), Origin:=65001            '复制读取的第一列依次到新建excel的列            Worksheets(1).Range("A:A").Copy xToBook.Sheets(xToBook.Sheets.Count).Columns(i)            '设置列宽随内容自适应            xToBook.Sheets(xToBook.Sheets.Count).Columns(i).EntireColumn.AutoFit            ' 关闭打开的txt转excel文件,false表示no save change            Workbooks(xFiles(i)).Close False        Next    End If        'resultName = getCurrentTime() & "_合并结果"    'xToBook.SaveAs (resultName)        copyTXT2Sheet = True    End FunctionFunction saveResult()        With Application.FileDialog(msoFileDialogSaveAs)        .Title = "选择路径保存结果"        .ButtonName = "保存"        .InitialFileName = getCurrentTime() & "_合并结果"        If .Show = 0 Then            MsgBox "文件未保存", vbCritical            Exit Function        End If        Application.DisplayAlerts = False        .Execute        Application.DisplayAlerts = True            End With            End FunctionFunction getCurrentTime()    getCurrentTime = Format(Now(), "YYYY-mm-dd-HH_MM_SS")End Function

结果

在这里插入图片描述

转载地址:http://flbd.baihongyu.com/

你可能感兴趣的文章
Netty基础—7.Netty实现消息推送服务一
查看>>
Netty基础—7.Netty实现消息推送服务二
查看>>
Netty基础—8.Netty实现私有协议栈一
查看>>
Netty基础—8.Netty实现私有协议栈二
查看>>
Netty多线程 和 Redis6 多线程对比
查看>>
Netty学习总结(1)——Netty入门介绍
查看>>
Netty学习总结(2)——Netty的高性能架构之道
查看>>
Netty学习总结(3)——Netty百万级推送服务
查看>>
Netty学习总结(4)——图解Netty之Pipeline、channel、Context之间的数据流向
查看>>
Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
查看>>
Netty学习总结(6)——Netty使用注意事项
查看>>
Netty实现Http服务器
查看>>
Netty客户端断线重连实现及问题思考
查看>>
Netty工作笔记0001---Netty介绍
查看>>
Netty工作笔记0002---Netty的应用场景
查看>>
Netty工作笔记0003---IO模型-BIO-Java原生IO
查看>>
Netty工作笔记0004---BIO简介,介绍说明
查看>>
Netty工作笔记0005---NIO介绍说明
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>