生活指南——让生活变得更简单

vba根据内容定位单元格_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

  • 评论列表:
  •  访客
     发布于 2022-07-22 15:22:56  回复该评论
  • umWhile Not EOF(num) Line Input #num, r MsgBox (r)Wendexcel用vba自动提取多个txt文件中指定位置多个字符到excel指定单元格中19:44开始解答这个问题,那时你还没有上传附件,试试能不能用
  •  访客
     发布于 2022-07-22 12:53:35  回复该评论
  • )Dim Fso As Object, oFile As ObjectDim tx, tx0, txk As StringDim r1, r2 As Integerr1 = 2 '从第2行开始写入'将需写入数据的列转换为文本格式,防止0开头的数字数据写入错误[A:A].
  •  访客
     发布于 2022-07-22 08:39:42  回复该评论
  • im num As IntegerDim r As StringDim f As String'将f指定为你的文件的路径f = "t.txt"num = FreeFile()Open f For Input As numWhil

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright Your WebSite.Some Rights Reserved.