Excel binary workbook что это
Как открыть XLSB файлы? 4 простых метода решения таких проблем
Когда вы сталкиваетесь с проблемой с неизвестным файлом XLSB и не знаете, как открыть такой файл, первый шаг, который вы должны сделать, это определить причину данной проблемы. Мы покажем вам, как решить наиболее распространенные проблемы с файлами XLSB и как их решить, в 4 простых шага.
XLSB расширение файла
Как открыть файл XLSB?
В некоторых случаях проблемы могут возникнуть при попытке открыть файлы XLSB. Приведенные ниже шаги могут быть полезны для решения таких проблем.
Шаг 1 – Убедитесь, что файл правильно связан с выбранным программным обеспечением
Первое, что пользователь должен сделать, это связать приложение с файлами XLSB. Может случиться так, что даже если в системе установлено приложение, поддерживающее файлы XLSB, оно не будет правильно связано с этим форматом файла. Это можно легко исправить, связав программу с файлами XLSB. Чтобы связать такие файлы с данным приложением, пользователь должен открыть меню файлов (щелкнув правой кнопкой мыши по файлу) и выбрав «Открыть с помощью». Список предлагаемых приложений будет отображаться в верхней части меню. Затем выберите приложение и подтвердите свой выбор, установив флажок «Всегда использовать выбранное приложение для открытия файлов такого типа». Подтвердите свой выбор, нажав ОК.
Чтобы открыть XLSB файл, сфокусируйтесь на шагах 1 и 2
В большинстве случаев для открытия файлов с расширением XLSB должно быть достаточно следующих инструкций на шаге 1 и 2. Прежде чем предпринимать следующие шаги, протестируйте все программы, перечисленные ниже.
Шаг 2 – Установите программу, которая поддерживает XLSB файлы
Если случится так, что раздел с предлагаемыми программами будет пустым, наиболее вероятно, что в системе не будет установлена программа, поддерживающая файлы XLSB. Выберите программу из следующего списка и установите ее:
Расширение файла XLSB
Excel Binary Spreadsheet
Что такое файл XLSB?
Создание формата XLSB
XLSB против XLSX
Файлы XLSX основаны на структуре XML и сжимаются с использованием метода сжатия ZIP, а файлы XLSB представляют собой несжатые двоичные файлы. Файлы XLSB содержат данные в двоичном формате, а не в формате XML, процессы чтения и хранения занимают гораздо меньше времени, что особенно важно при работе с очень большими документами. Еще одним преимуществом формата XLSB является поддержка более длинных формул, поскольку он поддерживает формулы длиннее 8192 знаков.
Заметка
Файлы XLSB могут содержать макросы, которые являются скриптами, которые будут выполняться на устройстве человека, который откроет файл. Поэтому они часто используются интернет-преступниками. При открытии файлов XLSB, полученных из неизвестных источников, следует соблюдать особую осторожность, чтобы наш компьютер не был заражен вирусами.
Программы, которые поддерживают XLSB расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов XLSB, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением XLSB, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл XLSB
Как открыть файл XLSB?
Причин, по которым у вас возникают проблемы с открытием файлов XLSB в данной системе, может быть несколько. К счастью, наиболее распространенные проблемы с файлами XLSB могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Получить Microsoft Excel
Наиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы XLSB, установленные в системе. Эта проблема может быть решена путем загрузки и установки # РЕКОМЕНДОВАННОЙ # или другой совместимой программы, такой как Apache OpenOffice, Microsoft Works, Office 365. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Microsoft Excel и загрузите установщик.
Шаг 2. Проверьте версию Microsoft Excel и обновите при необходимости
Если у вас уже установлен Microsoft Excel в ваших системах и файлы XLSB по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Причиной того, что Microsoft Excel не может обрабатывать файлы с XLSB, может быть то, что программное обеспечение устарело. Самая последняя версия Microsoft Excel обратно совместима и может работать с форматами файлов, поддерживаемыми более старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы Excel Binary Spreadsheet с Microsoft Excel
Если проблема не была решена на предыдущем шаге, вам следует связать XLSB файлы с последней версией Microsoft Excel, установленной на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Процедура изменения программы по умолчанию в Windows
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Убедитесь, что XLSB не неисправен
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл XLSB, о котором идет речь. Вероятно, файл поврежден и, следовательно, недоступен.
1. Убедитесь, что XLSB не заражен компьютерным вирусом
Если XLSB действительно заражен, возможно, вредоносное ПО блокирует его открытие. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если файл XLSB действительно заражен, следуйте инструкциям ниже.
2. Убедитесь, что структура файла XLSB не повреждена
Вы получили XLSB файл от другого человека? Попросите его / ее отправить еще раз. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Если файл XLSB был загружен из Интернета только частично, попробуйте загрузить его заново.
3. Убедитесь, что у вас есть соответствующие права доступа
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что в системе достаточно ресурсов для запуска Microsoft Excel
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы XLSB. Закройте все работающие программы и попробуйте открыть файл XLSB.
5. Убедитесь, что ваша операционная система и драйверы обновлены
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами Excel Binary Spreadsheet. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами XLSB, влияющими на более старые версии данного программного обеспечения.
File formats that are supported in Excel
You can save an Excel file in another file format by clicking the File > Save As. The file formats that are available in the Save As dialog box vary, depending on what type of sheet is active (a worksheet, chart sheet, or other type of sheet).
Note: Whenever you save a file in another file format, some of its formatting, data, and features might not be transferred.
To open a file that was created in another file format, either in an earlier version of Excel or in another program, click File > Open. If you open an Excel 97-2003 workbook, it automatically opens in Compatibility Mode. To take advantage of the new features of Excel 2010, you can save the workbook to an Excel 2010 file format. However, you also have the option to continue to work in Compatibility Mode, which retains the original file format for backward compatibility.
Excel file formats
The default XML-based file format for Excel 2010 and Excel 2007. Cannot store Microsoft Visual Basic for Applications (VBA) macro code or Microsoft Office Excel 4.0 macro sheets (.xlm).
Excel Macro-Enabled Workbook (code)
The XML-based and macro-enabled file format for Excel 2016, Excel 2013, Excel 2010, and Excel 2007. Stores VBA macro code or Excel 4.0 macro sheets (.xlm).
Excel Binary Workbook
The binary file format (BIFF12) for Excel 2010 and Excel 2007.
The default file format for an Excel template for Excel 2010 and Excel 2007. Cannot store VBA macro code or Excel 4.0 macro sheets (.xlm).
The macro-enabled file format for an Excel template Excel 2010 and Excel 2007. Stores VBA macro code or Excel 4.0 macro sheets (.xlm).
Excel 97- Excel 2003 Workbook
Excel 97- Excel 2003 Template
Microsoft Excel 5.0/95 Workbook
The Excel 5.0/95 Binary file format (BIFF5).
XML Spreadsheet 2003
XML Spreadsheet 2003 file format (XMLSS).
The XML-based and macro-enabled Add-In format for Excel 2010 and Excel 2007. An Add-In is a supplemental program that is designed to run additional code. Supports the use of VBA projects and Excel 4.0 macro sheets (.xlm).
Excel 97-2003 Add-In
The Excel 97-2003 Add-In, a supplemental program that is designed to run additional code. Supports the use of VBA projects.
An Excel 4.0 file format that saves only worksheets, chart sheets, and macro sheets. You can open a workbook in this file format in Excel 2010, but you cannot save an Excel file to this file format.
Works 6.0-9.0 spreadsheet
Spreadsheet saved in Microsoft Works 6.0-9.0.
Note: This format is supported in Excel Starter only.
Text file formats
Formatted Text (Space-delimited)
Lotus space-delimited format. Saves only the active sheet.
Saves a workbook as a tab-delimited text file for use on another Microsoft Windows operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Saves a workbook as a tab-delimited text file for use on the Macintosh operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Saves a workbook as a tab-delimited text file for use on the MS-DOS operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Saves a workbook as Unicode text, a character encoding standard that was developed by the Unicode Consortium.
CSV (comma delimited)
Saves a workbook as a comma-delimited text file for use on another Windows operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Saves a workbook as a comma-delimited text file for use on the Macintosh operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Saves a workbook as a comma-delimited text file for use on the MS-DOS operating system, and ensures that tab characters, line breaks, and other characters are interpreted correctly. Saves only the active sheet.
Data Interchange Format. Saves only the active sheet.
Symbolic Link Format. Saves only the active sheet.
Note: If you save a workbook in any text format, all formatting is lost.
Other file formats
dBase III and IV. You can open these files formats in Excel, but you cannot save an Excel file to dBase format.
Portable Document Format (PDF). This file format preserves document formatting and enables file sharing. When the PDF format file is viewed online or printed, it retains the format that you intended. Data in the file cannot be easily changed. The PDF format is also useful for documents that will be reproduced by using commercial printing methods.
Note: This format is not supported in Excel 2007.
XML Paper Specification (XPS). This file format preserves document formatting and enables file sharing. When the XPS file is viewed online or printed, it retains exactly the format that you intended, and the data in the file cannot be easily changed.
Note: This format is not supported in Excel 2007.
File formats that use the Clipboard
You can paste data from the Microsoft Office Clipboard into Excel by using the Paste or Paste Special command ( Home tab, Clipboard group, Paste button) if the Office Clipboard data is in one of the following formats.
Clipboard type identifiers
Pictures in Windows Metafile Format (WMF) or Windows Enhanced Metafile Format (EMF).
Note If you copy a Windows metafile picture from another program, Excel pastes the picture as an enhanced metafile.
Pictures stored in Bitmap format (BMP).
Microsoft Excel file formats
Binary file formats for Excel versions 5.0/95 (BIFF5), Excel 97-2003 (BIFF8), and Excel 2010 (BIFF12).
Symbolic Link Format.
Data Interchange Format.
Tab-separated text format.
Comma-separated values format.
Formatted text (Space-delimited)
Rich Text Format (RTF). Only from Excel.
Microsoft Excel objects, objects from properly registered programs that support OLE 2.0 (OwnerLink), and Picture or another presentation format.
OwnerLink, ObjectLink, Link, Picture, or other format.
Office drawing object
Office drawing object format or Picture (Windows enhanced metafile format, EMF).
Display Text, OEM Text.
Single File Web Page
Single File Web Page (MHT or MHTML). This file format integrates inline graphics, applets, linked documents, and other supporting items referenced in the document.
Note: This format is not supported in Excel 2007.
Hypertext Markup Language (HTML).
Note: When you copy text from another program, Excel pastes the text in HTML format, regardless of the format of the original text.
File formats that are not supported in Excel
The following file formats are no longer supported in Excel 2016, Excel 2013, Excel 2010, Excel Starter, and Excel 2007. You cannot open or save files in these file formats.
Clipboard type identifiers
Excel 2.0, 3.0, and 2.x file formats
WK1, FMT, WK2, WK3, FM3, WK4
Lotus 1-2-3 file formats (all versions)
Microsoft Works file format (all versions)
DBASE II file format
Quattro Pro for MS-DOS file format
Quattro Pro 5.0 and 7.0 for Windows.
File formats that are not supported in Excel Starter
Additionally, the following file formats are no longer supported in Excel Starter. You cannot open or save files in these file formats.
Excel 97-2003 Add-In
Access MDE database
Office Data Connection
Opening or viewing unsupported file formats
If a file format that you want to use is not supported in Excel, you can try the following:
Search the Internet for a company that makes file format converters for file formats that are not supported in Excel.
Save to a file format that another program supports and then export from that program into a file format that Excel supports.
Need more help?
You can always ask an expert in the Excel Tech Community or get support in the Answers community.
Препарирование xlsx файлов без MS Excel
Вступление
Маркетологи любят заморачиваться по-поводу красивых рекламных материалов. А еще они любят заморачитьвася по поводу красивого прайса! Не просто с картиночками, а с ссылочками на сайт. Чтобы сделать *ТЫК* и открылась страничка товара.
Но как мы хорошо знаем такую штуку средствами 1С не сделать. Никак не хочет 1С выгружать рабочие гиперссылки в документы в формате *.xlsx. Для редактирования *.xlsx можно воспользоваться различными офисными пакетами и API, которые они рпедлагают.
Наверняка все мы писали нечто вроде:
У нас в фирме сложилась ситуация, что у части сотрудников стоит бесплатный офисный пакет Open Office, WPS Office, а у части стоит всем хорошо известный MS Office.
Писать свои процедуры для каждого из этих зверей ой как не хочется, правда ведь?
Если вы ответили утвердительно, то описания выхода из ситуации чуток ниже =)
Имеется файл XLSX.
В нем есть столбец(текстовый) с ссылками на сайт.
Нужно заменить текст ссылкой. Ссылки должны отображаться как «Подробнее».
Общее описание формата XLSX
Приведем описание фаилов, которые нужны нам для решения поставленной задачи.
Файлы формата XLSX представляют из себя набор XML, упакованных в ZIP-архив.
Разобрать такой файлик можно нехитрым способом:
Общее описание содержиться в файлике workbook.xml.
Файл SharedStrings.xml содержит в себе значение всех текстовых ячеек файла. На него установлены ссылки из файлов sheet.xml (описание листов).
В папке workshhets содеражться описание непосредственно листов нашей эксельки.
В корне папки worksheets лежат файлы, описывающие листы.
В папке _rels, лежит файл, описывающий ссылки, которые нам нужны.
Более полную информацию можно найти по адресу: тыц.
Файл /xl/worksheets/sheet.xml
В файле содержиться как описание форматирования, так и данных.
Тег содержит следующие атрибуты:
Обратите особоое внимание на указание пространства имен r (xmlns:r=»http://schemas.openxmlformats.org/package/2006/relationships»). Его указывать обязательно.
Также ВАЖНО соблюдать порядок тегов. Тег должен стоять выше, чем тег
Файл /xl/worksheets/_rels/sheet1.xml
В нем все предельное все ясно и понятно. Приведм пример:
Файл /xl/sharedStrings.xml
В нем все предельно ясно и понятно. Приведем пример:
Решение поставленной задачи
Итак мы немного ознакомились со структурой файла с разрешением xlsx.
Для решения поставленной задачи нам необходимо:
Данные преобразования я выполнял с помощью объекта ДокументDOM. Вы можете вопользоваться другими способами.
Но есть один неприятный нюанс!
1С не умеет корректно прописывать пространство имен в атрибутах тегов! Для обхода этой проблемы пришлось вставить вот такой костыль:
Ну и в конце мы долждны запаковать наши файлики обратно:
На инфостарте был ряд публикаций, в которых данные читались из файлов XLSX, используя данный метод
Автоматизация рутины в Microsoft Excel при помощи VBA
В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.
VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.
Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.
Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.
Поэтому, увы, будем учить Visual Basic.
Чуть-чуть подготовки и постановка задачи
Итак, поехали. Открываем Excel.
Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.
Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):
То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).
Результат, которого хотим добиться, выглядит примерно так:
Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?
Кодим
Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».
И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».
Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:
Напишем Hello World:
Sub FormatPrice()
MsgBox «Hello World!»
End Sub
И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.
Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.
Примеры синтаксиса
Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i
Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x
On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne
ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок
‘ Циклы бывает, какие захотите
Do While True
Exit Do
Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select
Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.
Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.
Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.
Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.
Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.
Кодим много и под Excel
В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.
Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub
Работа с диапазонами ячеек
Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.
Примеры работы с Range
Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»
Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:
Для упрощения работы рекомендую определить следующие функции-сокращения:
Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function
Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».
Глобальные переменные
Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3
FormatPrice
Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String
Теперь надо заполнить массив Groups:
На месте многоточия
И создать заголовки:
На месте многоточия в предыдущем куске
For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2
Не забудем про процедуру AddHeader:
Перед FormatPrice
Теперь надо перенести всякую информацию в result
Подогнать столбцы по ширине и выбрать лист result для показа результата
После цикла в конце FormatPrice
Sheets( «Result» ).Activate
Columns.AutoFit
Всё. Можно любоваться первой версией.
Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:
Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:
Поэтому чуть-чуть меняем код с добавлением стиля границ:
Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub
Осталось лишь добится пропусков перед началом новой группы. Это легко:
В начале FormatPrice
Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String
В цикле расстановки заголовков
If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer
В точности то, что и хотели.
Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.
Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.
Спасибо за внимание.
Буду рад конструктивной критике в комментариях.
UPD: Перезалил пример на Dropbox и min.us.
UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.