Оле столкнулся с проблемой при импорте информации в книгу Excel. Кажется, что файлы, которые ему нужно импортировать, — это текстовые файлы, которые обычно содержат тысячи и тысячи записей. Однако Ole не нуждается в большинстве входных строк и обычно избавляется от них после импорта записей в Excel. Оле ищет способ избавиться от ненужных записей в процессе импорта, чтобы у него было меньше работы, когда данные находятся в его книге.

Есть несколько разных способов решения этой проблемы. Одно из решений — использовать Access в качестве первого шага импорта. Access легко обработает тысячи записей, которые вы хотите импортировать, даже если их больше, чем вы можете импортировать в Excel. Вы можете импортировать файл в Access, отфильтровать нежелательные записи, а затем экспортировать полученную таблицу как книгу Excel.

Однако лучшим решением может быть полный обход фильтров импорта Excel. Это отлично работает, если ваши данные импорта, такие как данные Оле, находятся в текстовом файле. Вы можете легко написать процедуру импорта в VBA и позволить ей обработать файл импорта. Например, рассмотрим следующий макрос:

Sub Import()

Dim sFile As String     Dim sUnwanted As String     Dim sDelim As String     Dim iRow As Integer     Dim iCol As Integer     Dim bBadRecord As Boolean     Dim iTemp As Integer

sFile = "d:\data.txt"

sUnwanted = "bad text"

sDelim = ","



Open sFile For Input As #1

iRow = 1     While Not EOF(1) 'Scan file line by line         iCol = 1         Line Input #1, sBuffer

' Check to see if should ignore record         bBadRecord = Instr(sBuffer, sUnwanted)



If Not bBadRecord Then             iTemp = Instr(sBuffer, sDelim)

While iTemp > 0                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = Left(sBuffer, iTemp-1)

End With                 iCol = iCol + 1                 sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer))

iTemp = Instr(sBuffer, sDelim)

Wend             If Len(sBuffer) > 0 Then                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = sBuffer                 End With             End If             iRow = iRow + 1         End If     Wend     Close #1 End Sub

Этот макрос открывает файл данных и считывает каждую запись в файле. Он проверяет запись, чтобы убедиться, что ее можно импортировать, а затем разделяет ее на части на основе разделителя и вставляет информацию в текущий рабочий лист. Вы можете изменить имя файла данных (переменная sFile), текст, указывающий на плохую запись (переменная sUnwanted) и разделитель (переменная sDelim).

В качестве примера предположим, что у вас есть файл данных с именем Customers.txt. Этот файл содержит все ваши записи о клиентах, но вы не хотите импортировать записи о клиентах с адресами в США. Кроме того, записи в файле данных используют символ табуляции между каждым полем. В этом случае вам нужно будет только внести следующие изменения в переменные в начале макроса:

sFile = "d:\Customers.txt"

sUnwanted = "United States"

sDelim = Chr(9)

После запуска макроса текущий рабочий лист будет содержать только нужные данные.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (8491) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Selectively_Importing_Records [Выборочный импорт записей].