Если вы хотите присвоить отфильтрованные значения массиву, простой способ сделать это - использовать расширенную фильтрацию и выполнить фильтрацию в другой области рабочего листа и назначить там свои значения.
Но простойподход, который поможет вам начать, - просто зациклить строки в вашем диапазоне, если строка скрыта, а затем двигаться дальше - в противном случае распечатайте данные в текстовом документе.
Dim rng As Range, r As Long
Set rng = Sheet5.Range("B1:C" & [B100000].End(xlUp).Row)
Dim FPath As String
FPath = ThisWorkbook.Path & "\" & "text" & ".txt"
Application.CutCopyMode = False
Open FPath For Output As #1
With Sheet5
For r = rng.Row To rng.Rows.Count + rng.Row - 1
If Not .Rows(r).Hidden Then
Print #1, .Cells(r, 1) & vbTab & .Cells(r, 2)
End If
Next
End With
Close #1