如何用vba读取多个txt文件名和txt文件内容写入excel中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用vba读取多个txt文件名和txt文件内容写入excel中?相关的知识,希望对你有一定的参考价值。
在多个txt文件的文件夹中新建一个EXCEL,在其VBA中输入ReadTextFiles(),然后运行:Sub ReadTextFiles()
Dim n As Long, a(), ff As Integer, txt As String, myDir As String, x
Dim myF As String, i As Long
myDir = ThisWorkbook.Path & Application.PathSeparator
myF = Dir(myDir & "*.txt")
Do While myF <> ""
ff = FreeFile
Open myDir & myF For Input As #ff
Do While Not EOF(ff)
Line Input #ff, txt
x = Split(txt, "|")
n = n 1
ReDim Preserve a(1 To n)
a(n) = x
Loop
Close #ff
myF = Dir()
Loop
Cells.Clear
With ThisWorkbook.Worksheets("Sheet1").Range("a1")
For i = 1 To UBound(a)
.Offset(i - 1).Resize(, UBound(a(i)) 1) = a(i)
Next
End With
End Sub追问
n = n 1
#######
...
.Offset(i - 1).Resize(, UBound(a(i)) 1) = a(i)
这两个部分 报错,编译不通过.
Sub cht()
Dim objFSO As Object, objFile As Objectg
Dim txtpath As String, cr As Long, ct As String, d As String, allt
txtpath = ThisWorkbook.Path & "\text.txt" '该为你自己的路径
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(txtpath, 1)
d = objFile.ReadAll
allt = Split(d, vbCrLf, -1, 1)
objFile.Close
cr = InputBox("输入需要更改的文本行数")
ct = InputBox("输入需要更改的文本内容")
allt(cr - 1) = ct
Set objFile = objFSO.createtextfile(txtpath, 1)
d = Join(allt, vbCrLf)
objFile.write d
objFile.Close
Set objFile = Nothing: Set objFSO = Nothing
End Sub 参考技术B 还有另一种方法, 创建FILEDIALOG 对像,MSOFILEPICKER, MULTIPLE SELECTION, SELECTED ITEMS 做个循环,用QUERYTABLE.ADD 加到空表上。追问
不知道怎么做 我用JAVA把数据放入数据库,再导出来了
参考技术C n = n+1.Offset(i - 1).Resize(, UBound(a(i)) 1) = a(i)
如何用python查询文件路劲
最近在用Python脚本处理文件夹下面的文件名的搜索和重命名。其中碰到如何递归遍历文件夹下面所有的文件,找到需要的文件,并且重命名的问题。其实如果看看Python的document,还是比较简单的,这里直接给出使用方法,免得大家还要花精力去查找。环境:
文件夹结构:
----path1
----path1-1
----path1-1.1.txt
----path1-2
----path1.1.txt
----path2
----recursiveDir.py
文件夹结构如上所示。
代码分析(recursiveDir.py):
[python] view plaincopy
<span style="font-size:18px;">import os
\'\'\'\'\'
本脚本用来演示如何遍历py脚本所在文件夹下面所有的文件(包括子文件夹以及其中包含的文件)。
重点演示如何获取每个文件的绝对路径。注意os.path.join(dirpath, filename)的用法。
\'\'\'
rootdir = os.getcwd()
print(\'rootdir = \' + rootdir)
for (dirpath, dirnames, filenames) in os.walk(rootdir):
#print(\'dirpath = \' + dirpath)
for dirname in dirnames:
print(\'dirname = \' + dirname)
for filename in filenames:
#下面的打印结果类似为:D:\\pythonDirDemo\\path1\\path1-1\\path1-1.1.txt
print(os.path.join(dirpath, filename))
if(filename==\'path1-1.1.txt\'):
os.chdir(dirpath)
#os.rename(os.path.join(dirpath, filename), dirpath + os.sep + \'path1-1.1.new.txt\')
os.rename(\'path1-1.1.txt\', \'path1-1.1.new.txt\')
#os.remove(os.path.join(dirpath, filename))
#下面的输出为fileName = path1-1.1.txt,并未包含绝对路径,所以需要使用os.path.join来链接,获取绝对路径
print(\'fileName = \' + filename)
print(\'------------------one circle end-------------------\')</span>
所以可以看到程序中使用os.path.join(dirpath, filename)来拼接出绝对路径出来。注意下面的重命名用法,可以将工作目录切换到os.chdir(dirpath),这样就可以直接用os.rename(oldfile, newfile).Python会自动到dirpath下面查找oldfile并且重命名为newfile。注意工作目录的含义:在Python的GUI中,使用os.getcwd()可以获取到当前工作目录。测试如下:
[html] view plaincopy
<span style="font-size:18px;">>>> os.chdir(\'D:\')
>>> os.getcwd()
\'D:\\\\pythonDirDemo\\\\path1\\\\path1-1\'
>>> os.chdir(\'D:\\\\\')
>>> os.getcwd()
\'D:\\\\\'</span>
可见却是可以用chdir改变工作目录。这个代码只是在重命名的时候用到的小技巧而已,大家知道有这个东西就行了,不过调用chdir之后,后续再获取getcwd()就会被影响,所以警惕。 参考技术A
Python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块,介绍几个如下:
得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd();
判断是否是绝对路径:os.path.isabs();
获取路径名:os.path.dirname();
获取文件名:os.path.basename();
返回指定目录下的所有文件和目录名:os.listdir();
检验给出的路径是否是一个文件:os.path.isfile();
检验给出的路径是否是一个目录:os.path.isdir();
检验给出的路径是否真地存:os.path.exists();
返回一个路径的目录名和文件名:os.path.split();
分离扩展名:os.path.splitext()。
以上是关于如何用vba读取多个txt文件名和txt文件内容写入excel中?的主要内容,如果未能解决你的问题,请参考以下文章
mfc如何用txt保存下拉框控件的内容?下拉框如何读入TXT中的内容到属性-数据中?
在excel中,如何用VBA将每列数据的输出为一个独立的文本文件txt