ODBC-таблицы, которые являются вкладками в таблице Excel: как они определяются и называются, чтобы Word мог их видеть?

Вопрос или проблема

У меня есть MS-Word и Excel (MS Office 2019, если это имеет значение). Я использую Word для создания листов красивых ярлыков, которые буду наклеивать на календарь. Ярлыки являются изображениями, а не текстом. Страница содержит 6 × 15 ярлыков. Ранее я делал это, painstakingly вставляя изображение на каждый ярлык, но мне это надоело. Поэтому теперь я использую слияние почты в Word.

Теперь каждый ярлык имеет поле (в смысле, в котором термин поле использует Quick Parts) вот такого вида:

{ INCLUDEPICTURE { IF TRUE "{ MERGEFIELD Filename }" } \d}

Затем я использую ODBC-соединение с файлом Excel, чтобы получить значение Filename для каждого ярлыка из таблицы слияния почты и подставляю его в поле INCLUDEPICTURE, так чтобы соответствующее изображение отобразилось на ярлыке. Это может показаться неэлегантным, но работает хорошо.

Word получает список имен файлов из Excel, используя оператор SQL ODBC

SELECT * FROM `'Public Holidays$'`

и Public Holidays — это название вкладки в таблице Excel.

Если я хочу предоставить другой список имен файлов для слияния почты, я могу сделать

Mailings | Select Recipients | Use an existing list... | +Connect to a New Data Source.odc
| Open data source: OLE DB Database Files (OK)
| What kind of data source?: ODBC DSN (Next)
| Excel Files (Next) | Select the database: (path to Excel file),
☑ Connect to a specific table:

и в списке таблиц я вижу несколько имен вида 'Public Holidays$', которые указывают на вкладки с таким же названием в электронной таблице (без завершающего знака $).

Затем я добавил новую вкладку в ту же электронную таблицу.

Что я ожидал, так это что новая вкладка появится (после закрытия как MS-Word, так и Excel и перезапуска) в этом списке таблиц. Но этого не случилось. После того, как я провозился с этим целое утро, я обнаружил, что иногда она появляется, а иногда нет.

Исходное соединение с электронной таблицей Excel было настроено с помощью мастера MS-Word. Я бродил в замешательстве и не могу точно вспомнить, как это все заработало. Я не могу воспроизвести то, что я сделал.

Что я хочу знать, так это то, как вкладка в электронной таблице Excel, являющаяся таблицей ODBC DSN, появляется в списке таблиц ODBC с добавленным $, и почему это происходит иногда, а иногда нет? Что особенного мне нужно сделать, чтобы новая вкладка появилась в списке? Я подозреваю, что это связано с вкладкой, потому что вкладка, которую я создаю, дублируя исходную, появляется в списке таблиц, но если я просто вставляю новую вкладку, эта вкладка не появляется в списке таблиц. Так, по крайней мере, кажется.

Я уже выяснил, что если я настраиваю именованный диапазон в электронной таблице Excel, это имя появляется в списке таблиц (без добавленного $) и это решает практическую проблему.

Но я хочу понять, как некоторые вкладки Excel появляются в списке как таблицы с $ в конце имени, а другие — нет. Долгий опыт работы с Windows заставляет меня ожидать, что имена ресурсов, заканчивающиеся на $, имеют магию. В этом случае, какая это магия?

(Изменено с моего оригинального поста)

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

Самое простое решение, вероятно, заключается в том, чтобы выбрать .xls (или .xlsx) напрямую в диалоговом окне Select Data Source, а не нажимать кнопку New Source… в этом диалоговом окне. Это означает, что вам нужно будет найти .xls, если он не находится в вашей папке My Data Sources.

Если вы это сделаете, как только вы выберете .xls/.xlsx, что произойдет, зависит от того, проверили ли вы опцию Word->File->Options->Advanced->General->Confirm file format conversion on open.

Если вы не проверяли ее, Word попытается открыть книгу, используя соответствующий провайдер OLEDB. Провайдер OLEDB был стандартным провайдером Windows Word для файлов Excel более 20 лет и обычно с ним проще работать, чем с любым из вариантов ODBC. Однако могут быть причины, по которым вам нужно использовать драйвер ODBC (например, два провайдера/драйвера форматируют числа по-разному), в этом случае есть еще одна процедура подключения, которую вы можете использовать.

Если вы проверили это, Word отобразит диалоговое окно Confirm Data Source. Если файл является файлом .xlsx, вы должны увидеть только один вариант, OLE DB Database Files. Выберите его, и Word должен представить список листов и именованных диапазонов. Если файл является файлом .xls, вы можете увидеть один или несколько вариантов ODBC, а также вариант DDE. Но все же выберите вариант OLE DB и продолжайте с этого момента.

Существуют, по существу, как минимум 3 различных маршрута, которые вы можете использовать для подключения через ODBC/OLEDB.

Маршрут OLEDB просто использует соответствующий провайдер OLEDB, у которого есть диалог, отображающий объекты, которые этот провайдер «видит».

Существует еще один аналогичный маршрут, который просто использует соответствующий ODBC-драйвер. У него более запутанный диалог, где вам (а) возможно, нужно будет повторно выбрать имя файла, или диалог может выбрать неправильный файл, и (б) вам нужно будет нажать кнопку его Options… и ВЫБРАТЬ флажок SYSTEM TABLES, чтобы убедиться, что диалог отображает все объекты, которые он может видеть. Я могу объяснить это, если вам действительно нужно продолжать использовать ODBC.

Эти диалоги OLEDB и ODBC отображают разные списки друг от друга и также могут отображать разные вещи в зависимости от того, открыта ли книга в Excel или нет. (например, драйвер ODBC отображает имена скрытых листов, если книга открыта в Excel, но не отображает, если нет).

Маршрут, который вы использовали, делает еще одно — он открывает книгу, используя OLE DB Provider для ODBC Drivers, и это использует соответствующий ODBC-драйвер для Excel. Этот маршрут отображает свой собственный список объектов, которые он может видеть. Но я думаю, что здесь есть ошибка, потому что он, похоже, может «видеть» только имена листов, в которых есть пробелы. (Я подозреваю, что на самом деле это «имена листов, которые заставляют драйвер окружать имя одиночными кавычками»). Поэтому это действительно не самый полезный маршрут в общем случае.

Ответ или решение

ODBC (Open Database Connectivity) – это стандартный интерфейс для доступа к базам данных из различных программных приложений. Для того чтобы в Microsoft Word удачно интегрировать таблицы из Excel с использованием ODBC, необходимо понимать, как Excel зарегистрирует свои таблицы, особенно те, которые соответствуют листам (вкладкам).

Определение и наименование ODBC таблиц в Excel

Когда вы создаете новый лист в Excel, он становится частью книги, и, как правило, каждый лист представляет собой отдельную таблицу для ODBC. Каждой таблице (листву) Excel автоматически присваивается имя, основанное на наименовании листа, и к этому имени добавляется символ $. Например, если вы создаете лист с именем "Public Holidays", он будет доступен как 'Public Holidays$'.

1. Правила именования:

  • Имена листов: Имена листов в Excel должны соответствовать определенным требованиям: они не могут содержать символы, такие как :, /, \, ?, и не должны начинаться с пробела.
  • Добавление символа $: Это символ важен для ODBC, так как он указывает на таблицы (вклады) в Excel. Когда имя листа корректно распознается, он отображается в ODBC с добавленным знаком $.

2. Понимание проблемы видимости:

Ваша проблема кроется в том, что не все листы могут отображаться в ODBC. Использование ODBC в сочетании с Excel может зависеть от нескольких факторов:

  • Открытие/закрытие книги: Иногда, когда книга Excel открыта в Excel, ODBC может отображать разные наборы листов по сравнению с теми, которые видны, когда книга закрыта.
  • Обновление ODBC метаданных: Важно обновлять данные ODBC после создания нового листа. Убедитесь, что вы обновляете соединение или перезапускаете приложение, чтобы увидеть изменения.

Решение проблемы с новым листом

Если новый лист не отображается в ODBC, попробуйте следующие шаги:

  1. Проверьте, что лист не скрыт: Скрытые листы могут не отображаться, поэтому убедитесь, что ваш лист виден.
  2. Создайте лист с уникальным именем: Постарайтесь избежать наименований, повторяющих уже существующие имена.
  3. Проверьте настройки ODBC: В диалоговом окне выбора источника данных убедитесь, что выбрана правильная база данных.
  4. Используйте именованные диапазоны: Как вы уже упомянули, именованные диапазоны хорошо отображаются в ODBC, поэтому это может быть хорошим решением.

Заключение

Чтобы выделять новые листы Excel в ODBC, следите за условиями их создания и именования. Помните, что правильная регистрация нового листа не всегда происходит автоматически, и чаще всего зависит от программной среды, в которой вы работаете. Изучая аспекты ODBC и настройки подключения, помимо текущих способов, вы сможете оптимизировать работу и избегать подобных проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...