求vb代码:批量txt导入,一个文本占一个单元格(某个文件夹里有上万个txt,要导入一个excle中)

举例:test文件夹里有
1.text 内容为:
我是number no.1
2.text 内容为:我是number no.2
要求导入一个excle中 A1:1.txt B1:我是number no.1 A2:2.txt B2:我是number no.2

Private Sub Command1_Click()
Dim oxl As Object, owb As Object, ost As Object
Dim d As String, i As Long
Set oxl = CreateObject("Excel.Application")
Set owb = oxl.Workbooks.Add
Set ost = owb.sheets(1)
d = Dir("f:\test\*.txt")
Do Until d = ""
    i = i + 1
    ost.cells(i, 1) = d
    Open "f:\test\" & d For Binary As #1
    ost.cells(i, 2) = Input(LOF(1), #1)
    Close #1
    d = Dir
Loop
owb.saveas "f:\test\test.xls"
owb.Close
oxl.quit
MsgBox "ok"
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-26

如果每个txt只有一行数据,那么可以这样:

Sub 宏2()
'
' 宏2 宏
'
'
Dim sPath As String
sPath = "E:\编程文件\VB\导入txt到Excel\"
For i = 1 To 10000
    If Dir(sPath & i & ".txt") = "" Then Exit Sub
    ActiveSheet.Range("A" & i).Value = i
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & sPath & i & ".txt", Destination:=Range("$B$" & i))
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 936
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
Next i
End Sub

思路:先录制宏手动导入一个Txt文件,适当修改代码即可。

追问

我的txt文件 每个里面不只是一行数据 是好多

追答

更改代码如下:

Sub 宏2()
'
' 宏2 宏
'

'
Dim sPath As String
Dim nR As Long, nT As Long
sPath = "E:\编程文件\VB\导入txt到Excel\"
nR = 1
For i = 1 To 10000
    If Dir(sPath & i & ".txt") = "" Then Exit Sub   '判断文件是否存在
    'ActiveSheet.Range("A" & i).Value = i
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & sPath & i & ".txt", Destination:=Range("$B$" & nR))

        .RowNumbers = False
       '……字数太多受限制了,中间这段代码没复制过来,和上面一样。
        .Refresh BackgroundQuery:=False
    End With
    nT = ActiveSheet.Range("B65535").End(xlUp).Row - nR + 1   '插入了多少行
    ActiveSheet.Range("A" & nR & ":A" & nR + nT - 1).Value = i & ".txt"
    nR = nR + nT
Next i
End Sub

追问

哎呀 我采纳错了… 我怎么财富值转给您呢…

追答

没关系,应该不能转~

本回答被网友采纳
第2个回答  2016-08-26
这个还是可以实现的 我可以帮你写 留个企鹅追问

大神百度不让留吧

求vb代码:批量txt导入,一个文本占一个单元格(某个文件夹里有上万个...
i As LongSet oxl = CreateObject("Excel.Application")Set owb = oxl.Workbooks.AddSet ost = owb.sheets(1)d = Dir("f:\\test\\*.txt")Do Until d = "" i = i + 1 ost.cells(i, 1) = d Open "f:\\test\\" & d For Binary As #1 ost.cells(i, 2) =...

vb 将Txt 文本中的内容导入excel
打开文本数据。 新建Excel文档,并打开Excel文档,点击左上角开始处,点击“打开”。 打开数据导入界面,选择文本数据点击“确定”,进入下一界面。 在下一界面,勾选“逗号”,点击“下一步”,下一页面,继续点击“下一步”。 操作完成后,数据导入完成。 本回答由电脑网络分类达人 董辉推荐 举报| 答案纠错 | 评论 1 ...

...VBA编个读文件的范例。 例如,用VBA将某个txt文件中的一列数据分别...
假设d盘文件夹123中,有一个456的txt文件,456.txt的第10行为:a-b-c ,现在将b读取到sheet1的a1单元格。下面是代码 sub ff()dim a,k%,i Open "d:\\123\\456.txt" For Input As #1 '读取456txt文件,为1号文件 a = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf) ...

求通过excel文件批量导入vb自带数据库文件的代码,我只需要导入一列或者...
如果是一次性的操作,直接用ACCESS打学习表.MDB,从EXCEL中直接把这两列数据复制、粘贴到表一中就行了,不用写代码这么麻烦。如果是经常性的操作,就需要写一个完整的程序。会比较复杂,需要操作数据库,还要操作EXCEL,这个建议你还是在网上找别人的源码,自己一点都没弄过的话会花不少时间。

如何把若干个txt文件导入一个excel表
在弹出的资源管理器中选择 txt 文件,点击“打开”按钮;文本导入向导 - 步骤1:选择合适的文件类型:分隔符号(如逗号或字表符分隔每个字符);固定宽度(每列字段加空格对齐);其它一般默认,点击“下一步”按钮。文本导入向导 - 步骤2:设置分列数据所包含的分隔符号,即每个单元格如何辨别;示例(...

VBA批量导入文本文件,如何转换二维数组?
f = Dir(p & "*.txt*") '开始遍历工作簿 While f <> ""Filename = p & "\\" & f Open Filename For Input As #1 str = StrConv(InputB(LOF(1), 1), vbUnicode)Close #1 arr = Split(str, Chr(10)) '只会生成一维数组,如何变成二维数组录入到单元格中 ReDim brr(UBound(arr...

...文件夹中查找包含此内容的文件,并将文件复制到另一个文件夹中...
Private Function MyFunction(Range1 As String, Range2 As String, Newpath As String)Dim OldPath As String Dim i As Long, j As Long L1:OldPath = InputBox("请输入要查找字符的文件夹:", "提示信息")If StrPtr(OldPath) = 0 Then End '如果点击取消或者关闭按钮 则退出程序 If ...

求个可以将一个句子中的中文和英文分开并分行显示的VB代码
1、先打开一个EXCEL工作表。2、将汉英连在一起的词汇表复制到工作表中的A列。3、在B1单元格输入如下公式: =LEFT(A1,LEN(A1)-(LENB(A1)-LEN(A1))-1) 回车。4、在C1单元格输入如下公式: =RIGHT(A1,LENB(A1)-LEN(A1)) 回车。5、向下复制。6、个别修正。汉语在前,英文在后...

大神,一个word文档中有很多格式一样的表格,我要让表格某一列居左...
\/ 2Me.Move XO, YO 以上不一定好用。如果没有必要,用简单一些的方面更好。比如:用表格属性中的内容居中。1、在表格中单击右键,选择设置单元格格式 2、选择对齐,面板中的水平对齐。垂直对齐。3、水平对齐中选择,居中。垂直对齐中选择居中。4、这样文字内容就对齐了并且是水平、垂直都对齐。

excel 批量导入文本一个宏的问题!
在使用Excel进行批量导入文本时,若遇到宏相关问题,可以尝试以下代码:定义一个名为Fso的对象,使用CreateObject函数创建"Scripting.FileSystemObject"。使用For Each循环遍历指定目录下的所有文件。通过文件名筛选出.txt类型的文件。使用Open语句打开文件,将内容输入到名为#1的流中。将流中内容转换为字符串并...

相似回答