如何在excelvba中获取不同长度的特定行
大家好,我有下面这样的文本文件,我保存了它myfile.txt如何在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
!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(模仿工作表修剪功能)。