Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA в примерах .doc
Скачиваний:
113
Добавлен:
03.05.2015
Размер:
1.33 Mб
Скачать

Перечень имен листов в виде гиперссылок

Листинг 3.53.Перечень имен рабочих листов

SubSheetNamesAsHyperLinks()

Dim sheet As Worksheet

Dim cell As Range

WithActiveWorkbook

' Просмотр всех листов книги и создание гиперссылок на них _

на первом листе

For Each sheet In ActiveWorkbook.Worksheets

Set cell = Worksheets(1).Cells(sheet.Index, 1)

.Worksheets(1).Hyperlinks.Add Anchor:=cell, Address:="", _

SubAddress:="'" & sheet.Name & "'" & "!A1"

cell.Formula = sheet.Name

Next

End With

EndSub

Удаление пустых строк на рабочем листе

Листинг 3.54.Удаление пустых строк (вариант 1)

Sub DeleteEmptyStrings()

Dim intLastRow As Integer ' Номер последней используемой строки

Dim intRow As Integer ' Номер проверяемой строки

' Получение номера последней используемой строки

intLastRow = Worksheets(ActiveSheet.Index).UsedRange.Row + _

Worksheets(ActiveSheet.Index).UsedRange.Rows.Count - 1

' Счетчик устанавливается на используемую первую строку

intRow = Worksheets(ActiveSheet.Index).UsedRange.Row

' Удаление пустых строк

Do While intRow <= intLastRow

If ActiveSheet.Rows(intRow).Text = "" Then

' Удаление строки

ActiveSheet.Rows(intRow).Delete

' Данные сдвинулись вверх, поэтому номер последней _

строки уменьшился, а текущей - не изменился

intLastRow = intLastRow - 1

Else

' Текущая строка заполнена - переходим к следующей

intRow = intRow + 1

End If

Loop

End Sub

Листинг 3.55.Удаление пустых строк (вариант 2)

Sub DeleteEmptyStrings1()

Dim intRow As Integer

DimintLastRowAsInteger

' Получение номера последней используемой строки

intLastRow = ActiveSheet.UsedRange.Row + _

ActiveSheet.UsedRange.Rows.Count - 1

' Удаление пустых строк

For intRow = intLastRow To 1 Step -1

If ActiveSheet.Rows(intRow).Text = "" Then

ActiveSheet.Rows(intRow).Delete

End If

Next intRow

End Sub

Запись текущих данных в текстовый файл

Листинг 3.56.Запись в текстовый файл

SubSaveAsText()

DimcellAsRange

' Открытие файла для сохранения (имя файла соответствует имени _

рабочей книги, но отличается расширением - TXT)

Open ThisWorkbook.Path & "\" & ThisWorkbook.Name & ".txt" _

For Output As #1

' Запись содержимого заполненных ячеек таблицы в файл

For Each cell In ActiveSheet.UsedRange

If Not IsEmpty(cell) Then

Print #1, cell.Address, cell.Formula

End If

Next

' Не забываем закрывать файл

Close #1

End Sub

Листинг 3.57.Экспорт в текстовый файл

Sub SaveAsText1()

Dim cell As Range

' Открытие файла для сохранения (имя файла соответствует имени _

рабочей книги, но отличается расширением - TXT)

Open ThisWorkbook.Path & "\" & ThisWorkbook.Name & ".txt" _

For Output As #1

' Запись содержимого заполненных ячеек таблицы в файл

For Each cell In ActiveSheet.UsedRange

If Not IsEmpty(cell) Then

Print #1, cell.Address, cell.FormulaLocal

End If

Next

' Не забываем закрывать файл

Close #1

End Sub

Экспорт и импорт данных

Листинг 3.58.Экспорт и импорт данных

SubExportAsText()

Dim lngRow As Long

Dim intCol As Integer

' Открытие файла для сохранения

Open"C:\primer.txt"ForOutputAs#1

' Запись выделенной части таблицы в файл (построчно)

For lngRow = 1 To Selection.Rows.Count

' Запись содержимого всех столбцов строки lngRow

For intCol = 1 To Selection.Columns.Count

Write #1, Selection.Cells(lngRow, intCol).Value;

Next intCol

' Начнем новую строку в файле

Print #1, ""

Next lngRow

' Не забываем закрыть файл

Close #1

End Sub

Sub ImportText()

Dim strLine As String ' Одна строка файла

Dim strCurChar As String * 1 ' Анализируемый символ строки файла

Dim strValue As String ' Значение для записи в ячейку

Dim lngRow As Long ' Номер текущей строки

Dim intCol As Integer ' Номер текущего столбца

Dim i As Integer

' Открытие импортируемого файла

Open "C:\primer.txt" For Input As #1

' Считываем все строки файла и записываем данные, разделенные _

запятой, в ячейки таблицы (начиная с текущей ячейки)

Do Until EOF(1)

' Считываем строку из файла

Line Input #1, strLine

' Разбираем считанную строку

For i = 1 To Len(strLine)

strCurChar = Mid(strLine, i, 1)

If strCurChar = "," Then

' Найден разделитель столбцов - запятая. Запишем _

сформированное значение в ячейку

ActiveCell.Offset(lngRow, intCol) = strValue

intCol = intCol + 1

strValue = ""

ElseIf i = Len(strLine) Then

' Конец строки - запишем в таблицу последнее _

значение в строке (перед этим дополним его последним _

символом строки, кроме кавычки)

If strCurChar <> Chr(34) Then

strValue = strValue & strCurChar

End If

' Запись в таблицу

ActiveCell.Offset(lngRow, intCol) = strValue

strValue = ""

ElseIf strCurChar <> Chr(34) Then

' Добавление символа в формируемое значение ячейки _

(кавычки игнорируются)

strValue = strValue & strCurChar

End If

Next i

' Переход к новой строке таблицы

intCol = 0

lngRow = lngRow + 1

Loop

' Закрываем файл

Close #1

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]