我想通過使用InStr的值來查看數組。但是,我得到了誤報和誤報。Instr函數的假陽性和假陰性
I.e.會有字符串匹配,即使字符串完全匹配,也不會報告匹配或不報告匹配。
它需要Outlook。它將突出顯示的電子郵件轉換爲放置在指定路徑中的文本文件。然後通過將文本讀入數組並搜索數組內容來搜索文本文件中的分隔符。但是,如前所述,即使子字符串在數組中,InStr也會返回誤報和漏報。我嘗試過二進制和文本比較方法以及各種比較字符串。
任何想法?
注意:1)在對InStr感到沮喪之後,我試圖使用if then語句將數組與比較字符串進行比較,這就是我的代碼的最後一行所顯示的內容。 2)我已經將分隔符設置爲「xxxxx」,您可以在objfile.write命令集之後的行中看到它。 3)我試圖與InStr函數
3)最終目的使用文本和二進制比較模式: 一)提取強調了Outlook電子郵件和合併到一個文本文件中。 b)根據電子郵件的文本對定界文本文件進行排序(如果定界符之間的文本包含y,則放入數組y中,如果x ...等) c)按我指定的順序將數組打印到電子郵件中(例如x ,y,z)
這是因爲電子郵件每天到達不同的時間,但每天最後的摘要電子郵件必須組織成相同的訂單。
謝謝。
下面是我的代碼:
Sub MergeTextFromSelectedEmailsIntoTextFile()
Dim objFS As New Scripting.FileSystemObject, objFile As Scripting.TextStream
Dim objItem As Object, strFile As String
Dim wrapArray() As String
If ActiveExplorer.Selection.Count = 0 Then Exit Sub
strFile = InputBox("Please enter the full path and file name for the merged text:" _
, "Enter File Name")
Set objFile = objFS.CreateTextFile(strFile, False)
If objFile Is Nothing Then
MsgBox "Error creating file '" & strFile & "'.", vbOKOnly + vbExclamation _
, "Invalid File"
Exit Sub
End If
For Each objItem In ActiveExplorer.Selection
objFile.Write vbCr
objFile.Write (vbCr & Chr(10) & Chr(13) & ("xxxxx") & Chr(13) & Chr(13) & vbCr & vbLf)
objFile.Write (vbCr & vbLf & objItem.Body)
objFile.Write (vbCr & vbLf & Chr(13))
Next
objFile.Close
'Define variables for writing to array
Dim i As Integer
Set objFile = objFS.OpenTextFile(strFile, ForReading)
'write file contents to array
Do Until objFile.AtEndOfStream
ReDim Preserve wrapArray(i)
wrapArray(i) = objFile.ReadLine
i = i + 1
Loop
Dim xxxxx As String
xxxxx = xxxxx
'check each array index for contents
'note i have tried
''if instr(0, wraparray(i), "xxxxx",0) then msgBox "FoundDelim at line " & i
For i = LBound(wrapArray()) To UBound(wrapArray())
If wrapArray(i) = "xxxxx" Then MsgBox "FoundDelim! at line " & i
Next i
我是不是啞巴? - 在這段代碼中看不到'InStr'? –
另外'xxxxx = xxxxx'與'xxxxx =「xxxxx」'不一樣。你將變量設置爲自己,所以它是空的。 –
感謝您指出自我分配錯誤。然而,這僅僅是我之前試圖比較字符串的實驗中的一個殘餘,它並沒有在破碎的if-then語句中使用。此外,我編輯了這篇文章,以使我的總體目標更加清晰。 – Info5ek