КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Одновременное умножение всех данных диапазона
Экспорт и импорт данных Листинг 3.58. Экспорт и импорт данных Sub ExportAsText() Dim lngRow As Long Dim intCol As Integer
' Открытие файла для сохранения Open "C:\primer.txt" For Output As #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 Листинг 3.59. Умножение данных Sub MultAllCells() Dim dblMult As Double Dim cell As Range ' Ввод коэффициента для умножения dblMult = InputBox("Введите коэффициент, на который следует умножать") ' Умножение содержимого на введенный коэффициент For Each cell In Selection If IsNumeric(cell.Value) And cell.Value <> "" Then ' Умножаются только ячейки, содержащие числовые данные cell.Value = cell.Value * dblMult Else MsgBox "В ячейке " & cell.Address & " нечисловое значение" End If Next End Sub Преобразование таблицы Excel в HTML-формат Листинг 3.60. Преобразование таблицы в HTML-формат Sub ExportAsHtml() Dim strStyle As String ' Параметры стиля отображения ячейки Dim strAlign As String ' Параметры выравнивания ячейки Dim strOut As String ' Выходная строка с HTML-кодом Dim cell As Object ' Обрабатываемая ячейка Dim strCellText As String ' Текст обрабатываемой ячейки Dim lngRow As Long ' Номер строки обрабатываемой ячейки Dim lngLastRow As Long ' Номер строки предыдущей ячейки Dim strTemp As String Dim objWordApp As Object Dim i As Long
lngLastRow = Selection.Row ' Просмотр всех выделенных ячеек For Each cell In Selection ' Значение строки для рассматриваемой ячейки lngRow = cell.Row ' Если перешли на другую строку, то вставляем <tr> If lngRow <> lngLastRow Then strOut = strOut & vbTab & "</tr>" & vbCrLf & vbTab & _ "<tr>" & vbCrLf ' Переход на следующую строку lngLastRow = lngRow End If
' Задание шрифта ячейки If Not IsNull(cell.Font.Size) Then strStyle = " style=" & "font-size: " & Int(100 * _ cell.Font.Size / 19) & "%;" End If ' Для полужирного шрифта вставляем <b> If cell.Font.Bold Then strCellText = "<b>" & strCellText & "</b>" End If
' Задание выравнивания If cell.HorizontalAlignment = xlRight Then ' По правому краю strAlign = " align=" & "right" ElseIf cell.HorizontalAlignment = xlCenter Then ' По центру strAlign = " align=" & "center" Else ' По левому краю (по умолчанию) strAlign = "" End If
' Чтение текста в ячейке strCellText = cell.Text ' Если нужно, то вертикальный вывод текста (в строку strTemp _ с последующим перенесением обратно в strCellText) If cell.Orientation <> xlHorizontal Then strTemp = "" ' Печать после каждого символа специального _ разделителя - <br> For i = 1 To Len(strCellText) strTemp = strTemp & Mid$(strCellText, i, 1) & "<br>" Next i strCellText = strTemp strStyle = "" End If
strOut = strOut & vbTab & vbTab & "<td" & strStyle & strAlign _ & ">" & strCellText & "</td>" & vbCrLf Next ' Вставка <tr> для первой строки и </tr> - для последней strOut = vbTab & "<tr>" & vbCrLf & strOut & vbTab & "</tr>" & vbCrLf ' Вставка дескриптора <table> strOut = "<table border=1 cellpadding=3 cellspacing=1>" & vbCrLf & _ strOut & vbCrLf & "</table>"
' Запускаем Word и показываем в нем сформированный HTML-код Set objWordApp = CreateObject("Word.Application") objWordApp.documents.Add objWordApp.Selection = strOut objWordApp.Selection.Copy objWordApp.Visible = True Set objWordApp = Nothing End Sub Листинг 3.61. Экспорт данных в HTM-файл Sub ExportAsHtmlFile() Dim strStyle As String ' Параметры стиля отображения ячейки Dim strAlign As String ' Параметры выравнивания ячейки Dim strOut As String ' Выходная строка с HTML-кодом Dim cell As Object ' Обрабатываемая ячейка Dim strCellText As String ' Текст обрабатываемой ячейки Dim lngRow As Long ' Номер строки обрабатываемой ячейки Dim lngLastRow As Long ' Номер строки предыдущей ячейки Dim strTemp As String Dim strFileName As String ' Имя файла для сохранения HTML-кода Dim i As Long
' Запрос у пользователя имени файла для сохранения strFileName = Application.GetSaveAsFilename(_ InitialFileName:="Primer.htm", _ fileFilter:="HTML Files(*.htm), *.htm") ' Проверка, задал ли пользователь имя файла (если нет, _ то можно выходить) If strFileName = "" Then Exit Sub
lngLastRow = Selection.Row ' Просмотр всех выделенных ячеек For Each cell In Selection ' Значение строки для рассматриваемой ячейки lngRow = cell.Row ' Если перешли на другую строку, то вставляем <tr> If lngRow <> lngLastRow Then strOut = strOut & vbTab & "</tr>" & vbCrLf & vbTab & _ "<tr>" & vbCrLf ' Переход на следующую сроку lngLastRow = lngRow End If
' Задание шрифта ячейки If Not IsNull(cell.Font.Size) Then strStyle = " style=" & "font-size: " & Int(100 * _ cell.Font.Size / 19) & "%;" End If ' Для полужирного шрифта вставляем <b> If cell.Font.Bold Then strCellText = "<b>" & strCellText & "</b>" End If
' Задание выравнивания If cell.HorizontalAlignment = xlRight Then ' По правому краю strAlign = " align=" & "right" ElseIf cell.HorizontalAlignment = xlCenter Then ' По центру strAlign = " align=" & "center" Else ' По левому краю (по умолчанию) strAlign = "" End If
' Чтение текста в ячейке strCellText = cell.Text ' Если нужно, то вертикальный вывод текста (в строку strTemp _ с последующим перенесением обратно в strCellText) If cell.Orientation <> xlHorizontal Then strTemp = "" ' Печать после каждого символа специального _ разделителя - <br> For i = 1 To Len(strCellText) strTemp = strTemp & Mid$(strCellText, i, 1) & "<br>" Next i strCellText = strTemp strStyle = "" End If
strOut = strOut & vbTab & vbTab & "<td" & strStyle & _ strAlign & ">" & strCellText & "</td>" & vbCrLf Next ' Вставка <tr> для первой строки и </tr> - для последней strOut = vbTab & "<tr>" & vbCrLf & strOut & vbTab & "</tr>" & vbCrLf ' Вставка дескриптора <table> strOut = "<table border=1 cellpadding=3 cellspacing=1>" _ & vbCrLf & strOut & vbCrLf & "</table>"
' Сохранение HTML-кода в файл Open strFileName For Output As 1 Print #1, strOut Close 1
' Вывод окна с информационным сообщением о результатах работы MsgBox Selection.Count & " ячеек экспортировано в файл " & _ strFileName End Sub
Дата добавления: 2015-06-25; Просмотров: 358; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |