Как экспортировать – не Сохранить как – в другой формат?

Как я могу экспортировать лист или таблицу или выбор в другой формат файла без изменения текущего активного документа ?

Наша основная среда работы с данными находится в Excel, где широкое использование форматирования и формул используется для получения желаемых результатов. Затем результаты сохраняются как .CSV для взаимодействия с другими программами.

Когда используется «Файл >> Сохранить как >> Сохранить как тип >> CSV», создается файл .csv, а активный документ изменяется на saved_file.csv . Существуют некоторые предупреждения об утрате функциональности и форматировании в этом новом формате, но в остальном пользовательский интерфейс не изменяется. Имеются жирный шрифт, курсив, разные шрифты и размеры, заполнение фоновых ячеек, определенные диапазоны таблиц и так далее. Все формулы в клетках остаются нетронутыми.

Это катастрофа в ожидании. Пользователь возвращается к работе, усыпляя мысль о том, что все нормально, вскоре забывает, что текущий формат не поддерживает никакой магии и продолжает делать важные вещи ™. Пришло время обеда, они закрывают Excel, дважды давят на раздражающие диалоги, которые не читаются, потому что они видят их все время и выходят за дверь. … После обеда пользователь возвращается и понимает, что вся работа между первоначальным Save As и Exit ушла.

«Файл >> Экспорт », к сожалению, является еще одним навигационным маршрутом к «Сохранить как», также сменив активный документ на «some_file.csv».

Нам нужно экспортировать некоторые данные в другой тип файла и сохранить активный документ «our-real-data.xlsx».

Как это может быть сделано? И добавлено в меню или ленту для выполнения одним нажатием кнопки?

Как его можно разделить со всеми в организации? (Без запроса отдельных пользователей открыть редактор VBA и т. Д.)

Нам нужно экспортировать некоторые данные в другой тип файла и сохранить активный документ «our-real-data.xlsx».

CSV_tools.xla

Я собрал Quick VBA Add-In, который экспортируется как CSV, так как вы упомянули об этом. Я старался использовать как можно меньше кода, чтобы новые пользователи могли его легче понять.

Что это

  • Надстройка спрашивает, где сохранить CSV. Папка по умолчанию – это папка, в которой XLS сохраняется в
  • Надстройка автоматически определяет, следует ли использовать запятую или точку с запятой в качестве разделителя в отношении региональных настроек системы
  • Все значения текущего активного листа Excel экспортируются в новый CSV-файл, который назван в честь файла XLS
  • Существующий XLS не затрагивается каким-либо образом

Монтаж

  1. Загрузите надстройку и сохраните ее под C:\Users\%USERNAME%\AppData\Roaming\Microsoft\AddIns
  2. Откройте Excel и активируйте его в
    • Excel 2003: Строка меню → Сервис → Надстройки
    • Excel 2007: Параметры Excel → Надстройки → Перейти к
    • Excel 2010-13: вкладка «Файл» → «Параметры» → «Надстройки» → «Перейти»
  3. Перезагрузите Excel и посмотрите на панель меню.

    Введите описание изображения здесь

Код VBA

 Function ExportCSV() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") On Error Resume Next ChDrive (ActiveWorkbook.Path) ChDir (ActiveWorkbook.Path) strName = fso.GetBaseName(ActiveWorkbook.Name) On Error GoTo 0 strFilename = Application.GetSaveAsFilename(strName, "CSV Files,*.csv", 1) delimiter = Application.International(xlListSeparator) If Not strFilename = False Then Open strFilename For Append As #1 For Each rngRow In ActiveSheet.UsedRange.Rows arr2D = rngRow arr1D = Application.Index(arr2D, 1, 0) strRow = Join(arr1D, delimiter) Print #1, strRow Next Close #1 End If End Function 

Автоматические обновления для разных пользователей

Как только каждый пользователь включил надстройку в своем Excel (не может быть автоматизирован), вы можете скопировать новую .xla файла .xla через сетевой ресурс, Robocopy или аналогичные инструменты. Но это должен быть отдельный вопрос, поскольку существует слишком много разных способов решения проблемы.


Для Vee Geeks самая интересная часть –

 arr2D = rngRow arr1D = Application.Index(arr2D, 1, 0) strRow = Join(arr1D, delimiter) 

Который преобразует диапазон (одну строку в нашем случае) в 2D-массив, затем в 1D-массив и, наконец, в одну строку, используя функцию Join ()

Научите пользователя открывать копию этих данных.

При выборе документа Office вы можете щелкнуть правой кнопкой мыши значок и нажать «Создать». Это создает новый документ / лист / презентацию на основе оригинала. Пользователи могут экспортировать из этого, просто выполнив Save As

Надеюсь, у вас также есть хорошие резервные копии, хотя, если вы беспокоитесь …

  • Возвращайте значение, учитывая, что число находится в определенном диапазоне
  • Как получить заголовок Excel на каждой странице печати в качестве первой строки таблицы
  • Создать новую таблицу данных из многих книг Excel
  • Форматирование CSV с разделителями-запятыми, чтобы заставить Excel интерпретировать значение как строку
  • Функции массива Excel - как подсчитывать непустые ячейки на нескольких листах?
  • Создание формулы, которая запрашивает данные в столбце B на основе выбора из столбца A в Microsoft Excel
  • Как вставить функцию = now () в ячейку автоматически, когда я пишу в другой, и нажмите enter
  • Поиск в Excel для подсчета подстроки и отображения
  • Excel, объединить два листа с одним столбцом в качестве ключа
  • Не удается открыть файл Excel 2010 на SharePoint Foundation 2013
  • Копирование многострочного текста в одну ячейку в Excel
  • Давайте будем гением компьютера.