如何在 Excel 中将文本文件以原始名称导入到单独的工作表?

ms excelmicrosoft technologiesadvanced excel function更新于 2024/10/26 15:40:17

Microsoft Excel 以其高效管理和分析海量数据的能力而闻名。当处理多个包含数据的文本文件时,您需要将这些数据导入到 Excel 中原始名称的单独工作表中,这个过程似乎令人望而生畏。尽管如此,Excel 提供了一个简单而强大的解决方案,可以轻松完成这项任务。

在本文中,我们将引导您了解如何将多个文本文件导入多个工作表的精确技巧。这项宝贵的技能可以帮助您高效地组织和分析数据。掌握这些方法可以让您将数据从各种文本文件无缝导入 Excel。从而在处理大量数据集时节省大量时间和精力。无论您是处理来自不同来源的数据,还是需要合并来自多个文本文件的信息,Excel 的多功能导入功能都能帮助您简化工作流程。让我们深入了解如何在 Excel 中导入文本文件,并探索一些能够提升您数据管理技能的实用技巧。

要在 Excel 中启用 VBA,请按照以下说明操作

右键单击功能区栏,然后选择"自定义功能区"选项

选中"开发人员"框,然后点击"确定"

方法 1:使用 VBA 宏导入多个文本文件,方法是选择包含所有所需文本的文件夹文件

如果您熟悉 Excel VBA(Visual Basic for Applications),您可以利用其编程功能将多个文本文件导入到单独的工作表中。这种方法提供了灵活性和自定义选项,可满足特定需求。

  • 步骤 1 − 要在 Excel 中打开 Visual Basic 编辑器,请点击"Alt+F11"组合键,或转到功能区中的"开发人员"选项卡,然后选择"Visual Basic"选项。

  • 步骤 2 − 在 Visual Basic 编辑器中,点击"插入",然后选择"模块"以插入新模块。

  • 步骤 3 − 在模块中,粘贴以下 VBA 代码 −

Sub LoadPipeDelimitedFiles()
   'UpdatebyExtendoffice20181010
   Dim xStrPath As String
   Dim xFileDialog As FileDialog
   Dim xFile As String
   Dim xSheetCount As Long
   Dim xWS As Worksheet
    
   On Error GoTo ErrHandler
   Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
   xFileDialog.AllowMultiSelect = True
   xFileDialog.Title = "Select a folder [Kutools for Excel]"
   If xFileDialog.Show = -1 Then
      xStrPath = xFileDialog.SelectedItems(1)
   End If
   If xStrPath = "" Then Exit Sub
   Application.ScreenUpdating = False
   xFile = Dir(xStrPath & "\*.txt*")
   Do While xFile <> ""
      Set xWS = Sheets.Add(After:=Sheets(Sheets.Count))
      xWS.Name = Left(xFile, Len(xFile) - 4)
      With xWS.QueryTables.Add(Connection:="TEXT;" & xStrPath & "" & xFile, Destination:=xWS.Range("A1"))
         .Name = "a" & xSheetCount
         .FieldNames = True
         .RowNumbers = False
         .FillAdjacentFormulas = False
         .PreserveFormatting = True
         .RefreshOnFileOpen = False
         .RefreshStyle = xlInsertDeleteCells
         .SavePassword = False
         .SaveData = True
         .AdjustColumnWidth = True
         .RefreshPeriod = 0
         .TextFilePromptOnRefresh = False
         .TextFilePlatform = 437
         .TextFileStartRow = 1
         .TextFileParseType = xlDelimited
         .TextFileTextQualifier = xlTextQualifierDoubleQuote
         .TextFileConsecutiveDelimiter = False
         .TextFileTabDelimiter = False
         .TextFileSemicolonDelimiter = False
         .TextFileCommaDelimiter = False
         .TextFileSpaceDelimiter = False
         .TextFileOtherDelimiter = "|"
         .TextFileColumnDataTypes = Array(1, 1, 1)
         .TextFileTrailingMinusNumbers = True
         .Refresh BackgroundQuery:=False
      End With
      xFile = Dir
      xSheetCount = xSheetCount + 1
   Loop
   Application.ScreenUpdating = True
   Exit Sub
ErrHandler:
   MsgBox "No txt files found.", , "Kutools for Excel"
End Sub

  • 步骤 4 - 选择"宏"选项卡。

  • 步骤 5 - 选择可用的宏并点击"运行"

  • 步骤 6 - 将打开窗口,供您选择包含所有需要导入的文本文件的文件夹。选择文件夹并按"确定"。

Excel 会将文件夹中所有文本文件的数据导入到单独的工作表中,每个工作表都以相应的文件名命名。

方法 2:使用 VBA 宏通过选择所需文件导入多个文本文件

  • 步骤 1 − 要在 Excel 中打开 Visual Basic 编辑器,请按"Alt+F11"组合键,或转到功能区中的"开发人员"选项卡,然后选择"Visual Basic"选项。

  • 步骤 2 − 在 Visual Basic 编辑器中,点击"插入",然后选择"模块"以插入新模块。

  • 步骤 3 − 在模块中,粘贴以下 VBA 代码 −

Sub CombineTextFiles()
'updateby Extendoffice
   Dim xFilesToOpen As Variant
   Dim I As Integer
   Dim xWb As Workbook
   Dim xTempWb As Workbook
   Dim xDelimiter As String
   Dim xScreen As Boolean
   On Error GoTo ErrHandler
   xScreen = Application.ScreenUpdating
   Application.ScreenUpdating = False
   xDelimiter = "|"
   xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Kutools for Excel", , True)
   If TypeName(xFilesToOpen) = "Boolean" Then
      MsgBox "No files were selected", , "Kutools for Excel"
      GoTo ExitHandler
   End If
   I = 1
   Set xTempWb = Workbooks.Open(xFilesToOpen(I))
   xTempWb.Sheets(1).Copy
   Set xWb = Application.ActiveWorkbook
   xTempWb.Close False
   xWb.Worksheets(I).Columns("A:A").TextToColumns _
      Destination:=Range("A1"), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=False, Semicolon:=False, _
      Comma:=False, Space:=False, _
      Other:=True, OtherChar:="|"
   Do While I < UBound(xFilesToOpen)
      I = I + 1
      Set xTempWb = Workbooks.Open(xFilesToOpen(I))
      With xWb
         xTempWb.Sheets(1).Move after:=.Sheets(.Sheets.Count)
         .Worksheets(I).Columns("A:A").TextToColumns _
         Destination:=Range("A1"), DataType:=xlDelimited, _
         TextQualifier:=xlDoubleQuote, _
         ConsecutiveDelimiter:=False, _
         Tab:=False, Semicolon:=False, _
         Comma:=False, Space:=False, _
         Other:=True, OtherChar:=xDelimiter
      End With
   Loop
ExitHandler:
   Application.ScreenUpdating = xScreen
   Set xWb = Nothing
   Set xTempWb = Nothing
   Exit Sub
ErrHandler:
   MsgBox Err.Description, , "Kutools for Excel"
   Resume ExitHandler
End Sub

  • 步骤 4 − 选择"宏"选项卡。

  • 步骤 5 − 选择可用的宏并点击"运行"。

  • 步骤 6 − 将会打开一个文本文件窗口。按住"Ctrl"键并点击所需文件,然后按"确定"即可选择多个文本文件。

Excel 会将文本文件中的数据导入到单独的工作表中,每个工作表都以相应的文件名命名。

总结

在 Excel 中,将文本文件导入为保留原始名称的单独工作表是一项强大的功能,可以提升您高效管理和分析数据的能力。在本文中,我们探讨了两种完成此任务的方法。第一种方法利用了 Excel 的 Power Query 编辑器,让您可以轻松地从多个文本文件导入和转换数据。第二种方法则使用 VBA 宏来自动化导入过程,并提供针对特定需求的自定义选项。

将这些技术融入您的 Excel 工作流程中,可以简化文本文件的导入,节省时间并提升数据管理能力。Excel 丰富的导入功能使您能够无缝处理来自各种来源的数据,从而促进数据分析和决策过程。


相关文章


有用资源