使用VBA将特定的文本文件导入Excel电子表格

我有一个每天创build的文本文件,每天放在同一个文件夹中。 文本文件的文件path永远不会改变。 现在,我们假设path是:“\ MyPath \ test.csv \”

我想在MS Excel 2010中创build一个报告,用户可以按下一个button,文本文件被导入到一个范围,比如说Worksheet(“Sheet1”)。Range(“A1”),然后分析导入的数据。

我已经使用MS Excel的VBA了一段时间,并了解如何创build一个脚本,将从各种数据库中导入数据等,但我似乎无法得到我的头周围导入文本文件! 我在网上find的所有例子似乎打开用户select文本文件的对话框,但我不希望我的用户能够做到这一点。 我希望每次都导入一个特定的文本文件,而不需要用户input。 他们所要做的只是按下一个button来启动macros。

有人有一个非常简单的代码,将为我做导入? 基本上,我想要一个macros将选定的文本文件导入Sheet1单元格A1。 我也想手动指定代码内的文本分隔符。

任何帮助/build议,将不胜感激。

一些假设给你一些自定义这个代码示例的灵活性。 我的testing数据文件显示在下面的图像中,即十个可变长度logging,每个字段用逗号分隔。 代码一次读取.csv文件一条logging,并将每条logging放在单独的行上。 在每行(即每个logging)内,每个字段被放入一个单独的单元格中。 它使用了几个数组来实现这一点。 您可以调整代码以适应您的上下文,并有一些评论,帮助。 只需添加一个button来调用这个macros。

在这里输入图像描述

Sub ReadTxtFile() Dim ws As Worksheet Dim rearr(), wrarr() Dim fName As String Dim rowno As Long, colno As Long, rec As Long Dim cnt As Long, cnt2 As Long Dim delim As String 'specify output sheet Set ws = Worksheets("Sheet1") 'specify text file to read (.csv in this example) fName = "C:\MyPath\test.csv" 'set text file delimiter delim = "," 'for Tab delimiter use delim = Chr(9) ifnum = FreeFile 'set start row/col for text data to be placed ("A1" in this example) rowno = 1 'row 1 colno = 1 'col A With ws Open fName For Input Access Read As #ifnum rec = 0 Do While Not EOF(ifnum) Line Input #ifnum, tmpvar rec = rec + 1 'Put whole record into array ReDim Preserve rearr(1 To rec) rearr(rec) = tmpvar 'Split fields into a second array wrarr = Split(rearr(rec), delim) cnt2 = UBound(wrarr) 'Write fields out to specified ws range, one row per record For cnt = 0 To cnt2 ws.Cells(rowno, colno + cnt) = wrarr(cnt) Next cnt rowno = rowno + 1 Loop Close #ifnum End With End Sub