2014-06-20 3 views
0

У меня есть код VBA, который создает новую пустую таблицу. Что я хочу сделать, это импортировать таблицу excel, взяв первую строку в качестве имен полей, а затем импортировать оставшуюся часть лист как значения в моих полях.Ввод данных в таблицу чистого доступа от MS excel

Должен ли я иметь предопределенные имена полей для этого?

Private Sub Command11_Click() 
    Dim FilePath As String 
    FilePath = OpenFile() 

    'Create Temp Table 
    DoCmd.RunSQL ("CREATE TABLE Temp_Import_Table") 
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Temp_Import_Table", FilePath, False 


    DoCmd.RunSQL ("DROP TABLE Temp_Import_table") 

    MsgBox (FilePath) 
End Sub 

ответ

0

Вы делаете не нужно заранее создавать схему таблицы, TransferSpreadsheet создаст для вас таблицу, если она уже не существует. Если вы укажете HasFieldNames на True, имена полей из Excel будут импортированы в качестве заголовков полей. Если вы хотите, вы можете просто проверить наличие таблицы перед запуском TransferSpreadsheet и удалить его, если он существует.

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

0

Команда TransferSpreadSheet имеет параметр HasFieldName. Если установлено значение истинно, первый ряд будет использоваться в качестве имен полей

посмотреть здесь MSDN, VBA TransferSpreadSheet, или нажмите на первую тему на Google, поиск transferspreadsheet, или нажмите F1, когда в VBAEditor на слове transferSreadSheet

+0

Я уже пробовал это, проблема в том, что у меня нет полей в целом, поэтому я просто получаю сообщение об ошибке «FirstName не существует в таблице назначения» – user976007

Смежные вопросы