课程:
- 1、excel用vba自动提取指定txt文件中指定位置字符到excel指定单元格中
- 2、VBA,关于TXT文本信息的读取。
- 3、excel用vba自动提取多个txt文件中指定位置多个字符到excel指定单元格中
- 4、Excel 在线等,怎么利用VBA从txt文件中提取特定位置的数据
excel用vba自动提取指定txt文件中指定位置字符到excel指定单元格中
我刚刚编辑的,请试用。如下代码可实现提取第四行第四列的数据。
Sub xxx()
Dim myFile As String
Dim myText As String
Dim myString As String
Dim i As Single
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
.AllowMultiSelect = False
myFile = .SelectedItems(1)
End With
myText = Dir(myFile "\" "*.txt")
Do While Len(myText) 0
Open myFile "\" myText For Input As #1
myText = Split(Split(VBA.StrConv(InputB(LOF(1), 1), vbUnicode), Chr(10))(3), vbTab)(3) '4行4列,如果其余行或列数则更改相应的数字
Debug.Print myText
Close
myText = Dir
Loop
End Sub
VBA,关于TXT文本信息的读取。
Dim num As Integer
Dim r As String
Dim f As String
'将f指定为你的文件的路径
f = "t.txt"
num = FreeFile()
Open f For Input As num
While Not EOF(num)
Line Input #num, r
MsgBox (r)
Wend
excel用vba自动提取多个txt文件中指定位置多个字符到excel指定单元格中
19:44开始解答这个问题,那时你还没有上传附件,试试能不能用吧
Sub 批量提取TXT文件指定位置数据()
Dim Fso As Object, oFile As Object
Dim tx, tx0, txk As String
Dim r1, r2 As Integer
r1 = 2 '从第2行开始写入
'将需写入数据的列转换为文本格式,防止0开头的数字数据写入错误
[A:A].NumberFormatLocal = "@"
[C:C].NumberFormatLocal = "@"
[E:E].NumberFormatLocal = "@"
[G:G].NumberFormatLocal = "@"
[K:K].NumberFormatLocal = "@"
Set Fso = CreateObject("Scripting.FileSystemObject") '引用fso对象
For Each oFile In Fso.GetFolder(ThisWorkbook.Path "\数据源\").Files '遍历当前工作簿路径下的数据源文件夹内所有文件
If oFile.Name Like "*.txt" Then '如果拓展名为TXT
r2 = 1
Open oFile For Input As #1 '读取文件
Do While Not EOF(1) '遍历行至文件尾
Line Input #1, tx '输出行为字符串
If Len(Trim(tx)) 0 Then '如果非空个字符大于0
If r2 = 1 Then
Cells(r1, "A").Value = Mid(tx, 2, 2) '第一行的第2-3个字符放到A列
txk = Mid(tx, 2, 2) 'txk用于取K列数据
End If
If r2 = 2 Then
Cells(r1, "C").Value = Left(Right(tx, 7), 3) '第二行从右往左取7个字符,再取前3个,放到C列
txk = txk Left(Right(tx, 7), 3) 'txk用于取K列数据
End If
If r2 = 3 Then Cells(r1, "E").Value = Mid(tx, WorksheetFunction.Find("ABCDEF", tx) + 8, 4) '第三行找到ABCDEF的起始位置,从A向后数8个字符开始取,取4个
If Left(tx, 6) = "HIJKLM" Then Cells(r1, "G").Value = Left(Right(tx0, 6), 4) '某一行是HIJKLM开头的,该行的上一行数据从右往左取6个字符,再取前4个,放到G列
If Left(tx, Len(txk)) = txk Then Cells(r1, "K").Value = Mid(tx, 6, 6) '某一行是提取之后的A2C2中的数据开头的,第6-11个字符放到K2单元格
tx0 = tx '将此行字符存入临时变量作为上一行
End If
r2 = r2 + 1
Loop
Close #1
End If
r1 = r1 + 1
Next oFile
Set Fso = Nothing
End Sub
GIF动图
要提取的TXT文件的截图
Excel 在线等,怎么利用VBA从txt文件中提取特定位置的数据
'在下面的代码中,tf 是由 FileSystemObject 的 OpenTextFile 方法返回的 TextStream 对象:
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs,tf,str
Set fs = CreateObject("Scripting.FileSystemObject")
Set tf = fs.OpenTextFile("c:\testfile.txt", ForReading, TristateFalse)
'跳到指定字符数,这里指定10个字符。
tf.Skip(10)
'把指定数量的字符读到字符串,这里指定20个字符。
str = tf.Read(20)
tf.Close