|
楼主 |
发表于 2019-3-21 15:52
|
显示全部楼层
老师,还有个问题,您的查找匹配非常好用,但是实际上我们的原始TXT文档里面有好多不规则行,像XN5875,XN8560等,他们的产品内容/产品颜色明细行是不规则的,我们要先给他整理成正常的行,才能进行后期的中文对照匹配,前些日子有老师给写了一段代码,功能不错,把不规则行都做连续了,但是就是会在生成后的文档第一个字母前会留一个空格,会影响后期查找,匹配,您能给修改修改代码吗,?
Sub Main()
'标签:读文本,乱码,写文本,txt文本文件,去掉货描,颜色里面的不规则断行
Dim temptext As String, textarr, arr, i As Long, k As Long
Dim brr, j As Long, 你的文件路径 As String, 生成文本路径 As String
你的文件路径 = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Please select text file...")
On Error Resume Next
生成文本路径 = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Please select text file...")
On Error Resume Next
temptext = ReadUTF(你的文件路径)
textarr = Split(temptext, vbCrLf)
ReDim arr(UBound(textarr))
For i = 0 To UBound(textarr)
If InStr(textarr(i), "產品內容") > 0 Then
arr(k) = textarr(i)
For Each brr In Array("產品顏色明細", "印刷在外箱上的颜色")
For j = i + 1 To UBound(textarr)
If InStr(textarr(j), brr) > 0 Then
k = k + 1
arr(k) = textarr(j)
Exit For
Else
arr(k) = arr(k) & Trim(textarr(j))
End If
Next
i = j
Next
k = k + 1
Else
arr(k) = textarr(i)
k = k + 1
End If
Next
Call SaveFile(生成文本路径, Join(arr, vbCrLf))
MsgBox "完成"
End Sub
Function ReadUTF(ByVal filename As String) As String
With CreateObject("ADODB.Stream")
.Type = 2
.Mode = 3
.Open
.LoadFromFile filename
.Charset = "UTF-8"
.Position = 2
ReadUTF = .ReadText
.Close
End With
End Function
Public Function SaveFile(filename As Variant, strFileBody As Variant) As Boolean
Dim ADO_Stream As Object
Set ADO_Stream = CreateObject("ADODB.Stream")
With ADO_Stream
.Type = 2
.Mode = 3
.Charset = "utf-8"
.Open
.WriteText strFileBody
.SaveToFile filename, 2
End With
SaveFile = True
Set ADO_Stream = Nothing
End Function
|
|