У меня есть следующий код, который просматривает значения, которые у меня есть в столбце C. Когда он находит слово «Поиск», код создает именованный диапазон под названием «Поиск» для столбцов с D по F.
Dim featuresRng As Range
Dim rng As Range
Dim sht As Worksheet
Dim counter As Long
Dim cell As Range
Set sht = ThisWorkbook.Worksheets("Features")
Set featuresRng = sht.Range(sht.Range("C1"), sht.Range("C" & sht.Rows.Count).End(xlUp)) 'dynamically set the range of features
counter = 0 'this counter will help us avoid Union(Nothing, some range), which would give an error
For Each cell In featuresRng 'loop through the range of features
If cell.Value = "Query Builder" Then
counter = counter + 1
If counter = 1 Then
Set rng = sht.Range(cell.Offset(0, 1), cell.Offset(0, 3))
Else
Set rng = Union(rng, sht.Range(cell.Offset(0, 1), cell.Offset(0, 3))) 'build the range
End If
End If
Next cell
Debug.Print rng.Address
ThisWorkbook.Names.Add "QuBuild", rng
Однако, хотя в Name Manager это выглядит нормально, когда я использую VBA для преобразования диапазона в таблицу в слове, кажется, что он вставляет ВСЕ значения, где слово «Поиск» находится в столбце C. Примечание, в столбце CIимеют различные значения ячеек, такие как «Отчетность», «Поиск», «Поиск и фильтр», «Поиск и анализ» и т. д. Таким образом, диапазон, который вставляется в слово, кажется, включает строки из «Поиск и ..»."клетки тоже.
Это код, который я использую для экспорта в закладку в слове ...
On Error Resume Next
Set WordApp = GetObject(class:="Word.Application")
'Clear the error between errors
Err.Clear
If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")
'Handle if the Word Application is not found
If Err.Number = 429 Then
MsgBox "Microsoft Word could not be found, aborting."
GoTo EndRoutine
End If
On Error GoTo 0
'Make MS Word Visible and Active
WordApp.Visible = True
WordApp.Activate
'Create a New Document
Set myDoc = WordApp.Documents.Open("Doc1")
'Copy Excel Table Range
'Copy and Paste Search into MS Word
If DoesNameRangeExist("Search") = True Then
Search.Copy
myDoc.Bookmarks("Search").Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
End If
Любая помощь, как всегда, очень ценится!