Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
VBA скрипт для Excel - Как вставить значение из mdb файла Access по SQL запросу без названия столбца
 
Использую VBA скрипт в  Excel для вставки в ячейку таблицы Excel данных по SQL запросу из БД Access (файл mdb).
Вот сам скрипт. Он работает:
Код
Sub SQLQuery_1()
Dim varConn As String
Dim varSQL As String
  
    Range("A1").CurrentRegion.ClearContents
  
    varConn = "ODBC;DBQ=\\Server-esko\ae_base\BD_CutTools.mdb;Driver={Driver do Microsoft Access (*.mdb)}"
  
    varSQL = "SELECT HCountItem FROM cut_tools WHERE cut_name='A141'"
  
         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Cells(1, 1))
             .CommandText = varSQL
             .Name = "Query-39008"
             .Refresh BackgroundQuery:=False
         End With
  
End Sub
Проблема в том, что в Excel вставляется помимо результата SQL запроса, еще и название столбца(ов) Access. Как сделать что бы не вставлялись названия столбцов?
 
Цитата
Alex_Dom написал:
Как сделать что бы не вставлялись названия столбцов?
Удалите строку с названиями столбцов записав код удаления после выгрузки данных.
"Все гениальное просто, а все простое гениально!!!"
 
Я не силён в VBA. Не подскажете код решения?
 
Используйте ".FieldNames = False"
 
Спасибо. Заработало
Код
Sub SQLQuery_1()
Dim varConn As String
Dim varSQL As String   
    Range("A1").CurrentRegion.ClearContents
   
    varConn = "ODBC;DBQ=\\Server-esko\ae_base\BD_CutTools.mdb;Driver={Driver do Microsoft Access (*.mdb)}"
   
    varSQL = "SELECT HCountItem FROM cut_tools WHERE cut_name='A141'"
   
         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Cells(1, 1))
         .FieldNames = False
             .CommandText = varSQL
             .Name = "Query-39008"
             .Refresh BackgroundQuery:=False  
         End With
End Sub
Изменено: Alex_Dom - 20 Фев 2019 20:14:50
 
Если вам не нужны новые определённые имена (типа "Query-39008 *") в книге/листе, созданные при каждом выполнении "QueryTables", то также используйте ".Delete" (в самом конце), например:
Код
Sub SQLQuery_2()
    Const varSQL$ = "SELECT HCountItem FROM cut_tools WHERE cut_name='A141'"
    Dim varConn As String: varConn = "ODBC;DBQ=\\Server-esko\ae_base\BD_CutTools.mdb;Driver={Driver do Microsoft Access (*.mdb)}"
    
    With ActiveSheet
        .Range("A1").CurrentRegion.ClearContents
        With .QueryTables.Add(Connection:=varConn, Destination:=.Range("A1"))
            .CommandType = xlCmdSql
            .CommandText = varSQL
            .Name = "Query-39008"
            .FieldNames = False
            .Refresh BackgroundQuery:=False
            .Delete
        End With
    End With
End Sub
Страницы: 1
Читают тему (гостей: 1)
Наверх