Как изменить сохраненную спецификацию импорта Microsoft Access 2007 или 2010?

кто-нибудь знает, как изменить существующую спецификацию импорта в Microsoft Access 2007 или 2010? В более старых версиях в Мастере импорта была кнопка Дополнительно, которая позволяла выбрать и изменить существующую спецификацию. Я больше не вижу эту функцию, но надеюсь, что она все еще существует и только что была перемещена куда-то еще.

9 ответов


Я могу использовать эту функцию на своей машине с помощью MS Access 2007.

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

для чего это стоит, я использую Access 2007 SP1


Я не верю, что есть прямой способ. Тем не менее, если вы desparate, то в разделе параметры навигации выберите, чтобы показать системные объекты. Затем в списке таблиц появятся системные таблицы. Здесь представляют интерес две таблицы: MSysIMEXspecs и MSysIMEXColumns. Вы сможете редактировать информацию об импорте и экспорте. Удачи!


ответ Тима Лентайна кажется верным даже в полной версии. Есть только одна вещь, которую я хотел бы упомянуть.

Если вы завершите импорт, не входя в "дополнительно"..."и сохранение спецификации, но вы сохраняете импорт для повторного использования в конце мастера (новая функция AFAIK), вы не сможете вернуться и отредактировать эту спецификацию. Он встроен в"сохраненный импорт". Возможно, именно это имел в виду Нокс.

вы можете, однако, сделать частично обойти:

  1. импортируйте новый файл (или тот же самый), но,
  2. на этот раз выберите Добавить, вместо того, чтобы сделать новый
  3. нажмите OK.
  4. перейдите в "дополнительно", все ваши заголовки столбцов и типы данных будут там.
  5. теперь вы можете внести необходимые изменения и сохранить спецификацию в этом диалоговом окне. Затем отмените этот импорт (это не то, что вы хотели в любом случае, верно?)
  6. вы можете использовать это спецификации для любого дальнейшего импорта. Это не полное решение, но экономит часть работы.

Ниже приведены три функции, которые можно использовать для изменения и использования спецификации импорта MS Access 2010. Третий подраздел изменяет имя существующей спецификации импорта. Второй подраздел позволяет изменять любой xml-текст в спецификации импорта. Это полезно, если вам нужно изменить имена столбцов,типы данных, добавить столбцы, изменить расположение файла импорта и т. д.. По сути все, что вы хотите изменить в существующей спецификации. Первый Sub-это процедура, которая позволяет вызвать существующую спецификацию импорта, измените его для определенного файла, который вы пытаетесь импортировать, импортируйте этот файл, а затем удалите измененную спецификацию, сохраняя "шаблон" спецификации импорта неизменным и неповрежденным. Наслаждаться.

Public Sub MyExcelTransfer(myTempTable As String, myPath As String)
On Error GoTo ERR_Handler:
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Dim x As Integer

    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTempTable)
    CurrentProject.ImportExportSpecifications.Add "TemporaryImport", mySpec.XML
    Set myNewSpec = CurrentProject.ImportExportSpecifications.Item("TemporaryImport")

    myNewSpec.XML = Replace(myNewSpec.XML, "\MyComputer\ChangeThis", myPath)
    myNewSpec.Execute
    myNewSpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
    exit_ErrHandler:
    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
Exit Sub    
ERR_Handler:
    MsgBox Err.Description
    Resume exit_ErrHandler
End Sub

Public Sub fixImportSpecs(myTable As String, strFind As String, strRepl As String)
    Dim mySpec As ImportExportSpecification    
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTable)    
    mySpec.XML = Replace(mySpec.XML, strFind, strRepl)
    Set mySpec = Nothing
End Sub


Public Sub MyExcelChangeName(OldName As String, NewName As String)
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(OldName)    
    CurrentProject.ImportExportSpecifications.Add NewName, mySpec.XML
    mySpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
End Sub

когда я хочу изучить или изменить спецификацию импорта / экспорта, я запрашиваю таблицы в MS Access, где определена спецификация.

SELECT 
    MSysIMEXSpecs.SpecName,
    MSysIMexColumns.*
FROM 
    MSysIMEXSpecs
    LEFT JOIN MSysIMEXColumns 
    ON MSysIMEXSpecs.SpecID = MSysIMEXColumns.SpecID
WHERE
    SpecName = 'MySpecName'
ORDER BY
    MSysIMEXSpecs.SpecID, MSysIMEXColumns.Start;

можно также использовать инструкцию UPDATE или INSERT для изменения существующих столбцов или вставки и добавления новых столбцов к существующей спецификации. С помощью этой методологии можно создать совершенно новые спецификации.


Почему так сложно?

просто проверьте системные объекты в Access-Options / текущая база данных / параметры навигации / показать системные объекты

откройте таблицу "MSysIMEXSpecs" и изменить в соответствии с вашими потребностями - его легко читать...


еще один отличный вариант-это бесплатные V-Tools addin для Microsoft Access. Среди других полезных инструментов он имеет форму для редактирования и сохранения спецификаций импорта/экспорта.

enter image description here

enter image description here

Примечание: начиная с версии 1.83, существует ошибка в перечислении кодовых страниц в Windows 10. (По-видимому, из-за отсутствующей/измененной функции API в Windows 10) инструменты по-прежнему отлично работают, вам просто нужно прокомментируйте несколько строк кода или пройдите мимо него в окне отладки.

Это была реальная жизнь-saver для меня в редактировании сложной спецификации импорта для наших онлайн-заказов.


Тим Lentine работает, если у вас есть ваши характеристики сохранены. В вашем вопросе это не указано, в нем указано только, что вы импортировали данные. Его метод не спасет ваши спецификации таким образом.

способ сохранить спецификацию этого текущего импорта-повторно открыть импорт, нажать "apend", и это позволит вам использовать ваши текущие настройки импорта, которые MS Access подобрал. (это полезно, если вы хотите сохранить спецификации импорта из формата Excel, над которым вы работали до импорта в MS ACCESS.)

Как только вы находитесь в опции apend, используйте инструкции Тима, который использует расширенную опцию и "сохранить как."Оттуда просто нажмите "Отмена", и теперь вы можете импортировать любые другие подобные данные в различные таблицы и т. д.


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

Что я узнал, что, хотя доступ к корректно импортирует листа в модификации по умолчанию настройки пользователем (например, он любит взять любой столбец с заголовком названия, заканчивающиеся на "ID" и сделать его индексированного поля в результирующей таблице, но вы не можете отменить во время процесса импорта), а также правильно формирует XML в соответствии для пользователя изменения, если вы затем удалить таблицу и использовать сохраненный импорт, чтобы импортировать таблицу, он игнорирует XML импорт спецификации и возвращается обратно, используя свои придуманные значения по умолчанию, по крайней мере, в случае с "ИД" столбцы.

вы можете попробовать это самостоятельно: импортируйте лист Excel с хотя бы одним именем заголовка столбца, заканчивающимся на "ID" ("OrderID", "User ID" или просто "ID"). Во время процесса обязательно установите для этих столбцов значение "Indexed" в значение "No". Выполните импорт и установите флажок "сохранить шаги импорта" в последнем диалоговом окне. Если вы проверите результирующий дизайн таблицы, вы увидите, что в рассматриваемом поле(полях) нет индекса. Затем удалите таблицу, найдите сохраненный импорт и выполните его снова. На этот раз эти поля будут установлены как индексированные в дизайне таблицы, хотя XML по-прежнему не говорит об индексе.

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