Сравните электронную таблицу с базой данных для создания документа

Сравните электронную таблицу с базой данных для создания документа

Я пытаюсь оптимизировать создание документа, который должен создаваться на регулярной основе. Есть задачи, связанные с подробными инструкциями по их выполнению, и каждая из них имеет определенный идентификационный номер, который повторно используется в различных проектах. Я собрал столько идентификаторов этих задач, сколько смог, в базе данных Access.
Для каждого проекта кто-то другой извлекает список всех требуемых задач из другой базы данных, к которой я не могу получить доступ, и помещает их в книгу Excel со стандартным форматом. Для каждого проекта мне нужно:

  • Вызов всех соответствующих задач по идентификационному номеру
  • Сравните их со стандартным списком в моей базе данных, в котором указаны шаги по выполнению задачи и другая информация.
  • Создайте документ определенного формата, используя конкретную информацию о задачах.

Написание макроса в Excel казалось большой работой, но это был лучший вариант, но я не могу быть уверен, что база данных Access всегда будет оставаться на том же месте, где она должна быть. Поскольку база данных является постоянным элементом во всех проектах, я думал о написании макроса в Access и диалоговом окне с вопросом, где находится электронная таблица, что сработает, но использование таблицы для сравнения двух списков показалось мне более сложным, чем просто сгенерированная в Excel таблица сравнения. Я не рассматривал написание макроса в Word, хотя это тоже возможно.

Я пытаюсь найти наиболее логичный способ создания этой настройки. Использование 3 различных офисных программ кажется довольно запутанным, но я ограничен в программном обеспечении, которое у меня есть для этого:

  • Офис 2007
  • Вне всякого сравнения
  • Другие установленные программы (я не могу установить дополнительное программное обеспечение) не кажутся даже отдаленно соответствующими задаче.

Есть ли у кого-нибудь идеи, как это сделать?

решение1

Если бы у вас был Crystal Reports, вы могли бы присоединить таблицу Excel к таблицам Access; затем распечатать 2 отчета, один с данными, совпадающими по ID, и другой отчет, чтобы перечислить записи без совпадений ID. Форматирование просто потрясающее. Я пишу отчеты, в которых я присоединяю файлы Excel к базе данных Oracle для составления отчетов. Вы должны иметь возможность присоединить файл Excel к ACCESS и создать тот же тип отчетов, предполагая, что в обоих есть поля ID для сопоставления.

решение2

Рассматривали ли вы возможность использования ODBC-соединения для связи двух наборов данных?

Результаты Google для ODBC и Excel

Если ваша родная рабочая среда — это база данных, и вы можете работать над автоматизацией ввода этих новых полей данных, вы можете использовать простые запросы для выбора несовпадающих (новых) данных и работать оттуда. Жаль, что вы не можете просто выбить из первой базы данных свою собственную или сделать так, чтобы первый набор экспортируемых данных просто экспортировал CSV новых или измененных данных.

С любой стороны вы можете добавить новые данные и сравнить их с существующими (с помощью запросов в Access или сводной таблицы в Excel). Если вы создаете новый столбец/поле, которые будут действовать как простой логический флаг, вы можете различать наборы данных и объединять их в одну таблицу/документ. В качестве альтернативы можно применить код для еженедельного (или любого другого периода) импорта, чтобы вы могли использовать это поле «флаг» для будущих запросов.

Сводная таблица станет для меня первым пунктом назначения, поскольку на этапе определения области действия вы можете работать быстрее, чем с запросами к базе данных, и вы можете просматривать свои требования к отчетности/сравнению в одном представлении.

Если вы можете «стирать» свои данные, чтобы сделать их анонимными, пожалуйста, опубликуйте несколько примеров для более конкретных решений.

решение3

Вы можете получить данные Excel в виде набора записей, что позволит легко сравнивать

Dim xldb As New adodb.Connection
Dim xlcmd As New adodb.Command
Dim XL As New adodb.Recordset

With xldb
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=True"";"
    .Open
End With

Set xlcmd.ActiveConnection = xldb
xlcmd.CommandType = adCmdText
xlcmd.CommandText = "Select * from [Sheet1$]"
XL.CursorLocation = adUseClient
XL.CursorType = adOpenDynamic
XL.LockType = adLockOptimistic
XL.Open xlcmd

теперь вы можете использовать набор записей XL, осуществлять поиск/переход по нему и помещать информацию в свою базу данных

Связанный контент