Ich habe eine Excel-Datei, wo in Spalten einige Text und Schlüsselwörter gespeichert sind.Holen Sie sich Daten von Excel zu Office-Word-Array mit VBA
Ich möchte die Daten in Excel verwenden, um einige erweiterte Suche in Word mit VBA zu machen. Aber ich bekomme einen Fehler beim Versuch, die Daten von Excel-Zellen zu einem Array in VBA Word zu transponieren.
Ich habe die transpose Excel-Funktion verwendet, aber es behandelt nicht mehr als 255 Zeichen, so kann ich nicht Zelle Wert erhalten, der 255 Zeichen überschreitet.
Ich wäre dankbar, wenn mir jemand helfen könnte.
Option Explicit
Dim strArray
Dim range As range
Dim i As Long
Dim numberOfUniqMatches As Integer
Dim totalMatches As Integer
Sub HighlightMatchesAndSummarize()
totalMatches = 0
'************************************ GET DATA FROM EXCEL ***************************************
Dim xlApp As Object
Dim xlBook As Object
Const strWorkBookName As String = "D:\keyword_source_3.xlsx"
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
Set xlBook = xlApp.Workbooks.Open(FileName:=strWorkBookName)
'xlApp.Visible = True
xlApp.Visible = False
'transpose excel cells in our arrays
strArray = xlApp.Transpose(xlApp.ActiveSheet.range("A1:A20" & AlRow).Value)
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
'
' End of data extraction
'/******************************** SEARCH LOOP START **********************************
For i = 1 To UBound(strArray)
numberOfUniqMatches = 0
Set range = ActiveDocument.range
With range.Find
.Text = strArray(i)
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchFuzzy = False
.MatchPhrase = True
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
numberOfUniqMatches = numberOfUniqMatches + 1
totalMatches = totalMatches + 1
range.HighlightColorIndex = wdYellow
Loop
End With
Next
'
' End of search loop
' Display message if no matching word is found
If totalMatches <= 0 Then
MsgBox "Sorry! No matching keyword found."
Else
MsgBox "Search ended: " & totalMatches & " matching word(s)."
End If
End Sub
Bekomme es @TimWilliams, ich werde es versuchen und zu dir zurückkommen. Vielen Dank für Ihre Zeit. – Stackgeek
Hallo @TimWilliams, ich hoffe, es geht dir gut. Ich wollte dir nur für die Hilfe danken. Es funktionierte. Ich habe nicht über die Verwendung von Multidim-Array nachgedacht. Cool: D! Sie haben gerade vergessen, die schließende Klammer nach .Value zu entfernen – Stackgeek