如何在excelvba中获取不同长度的特定行

如何在excelvba中获取不同长度的特定行,excel,vba,Excel,Vba,大家好,我有下面这样的文本文件,我保存了它myfile.txt !File starts Some texts here version.number = 12345 Some texts here !File ends 我使用了如下所示的代码来获取版本号12345,但有时版本号可能是5位或更多数字。例如,如何使用代码获取6位123456 Dim myFile As String Dim text As String Dim textline As String Dim Version

大家好,我有下面这样的文本文件,我保存了它myfile.txt

!File starts 
Some texts here

version.number = 12345

Some texts here
!File ends 
我使用了如下所示的代码来获取版本号12345,但有时版本号可能是5位或更多数字。例如,如何使用代码获取6位123456

Dim myFile As String
Dim text As String
Dim textline As String
Dim VersionInfo As Integer

Sub DetectModelVersion()

myFile = "C:\test\myfile.txt"

Open myFile For Input As #1

Do Until EOF(1)
    Line Input #1, textline
    text = text & textline
Loop

Close #1

VersionInfo = InStr(text, "version.number")

ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Mid(text, VersionInfo + 17, 6)

End Sub

刚刚测试了下面的代码,它成功了

Option Explicit

Dim myFile As String
Dim text As String
Dim textline As String

Sub DetectModelVersion()

    myFile = "H:\myfile.txt"

    Open myFile For Input As #1

    Do Until EOF(1)
        Line Input #1, textline
        If InStr(textline, "version.number") Then
            text = Trim(Mid(textline, InStr(textline, "=") + 1, 255))
            Exit Do
        End If
    Loop

    Close #1

    ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = text

End Sub

我会在do循环中查找信息,检查文本行是否包含“version.number”,然后执行一些字符串操作,从=到行的末尾。那么长度就不重要了。@MichaelRusso是的,你是对的,但是你能帮我“从=到行尾”的代码是什么吗?正是我所想的。我会从中间(textline,InStr(textline,“=”)+1255)改为右边(textline,Len(textline)-(InStr(textline,“=”+1)),这样版本的大小就不重要了。希斯科特,谢谢你的回复。也可以将数字后的空格修剪到行尾(我只想提取数字)@Hakan-我将文本集语句包装在
trim
函数中,该函数应清除空白。@MichaelRusso-
Mid(x,y,255)
也将忽略版本大小。当然,我假设它永远不会超过255个字符,但如果是,那么您的公式会更好。是的。请注意,VBA的Trim命令只会删除填充字符串左右两侧的空格。如果需要从字符串中删除多余的空格(例如,单词之间有两个或多个空格),则应使用Application.Trim(模仿工作表修剪功能)。