excel vba копирует данные в самую верхнюю строку Excel

#excel #vba

#excel #vba

Вопрос:

Я запросил Excel с помощью ADODB и у меня есть набор данных, которые следует скопировать на второй лист, но когда я пытаюсь вставить данные, они всегда находятся во 2-й строке, игнорируя 1-ю. Я думаю, это потому, что 1-я строка всегда обрабатывается как заголовок. Существуют ли какие-либо способы вставки данных в Excel путем создания 1-й строки в качестве заголовка, а затем со значениями (в отношении кода, который я написал ниже).

 Exceldb = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:VAS_AUTOMATION_v1.1Book1.xlsx;Extended Properties=""Excel 12.0;HDR=Yes;"";"
Dim sDBConnectionString, i, iCol

Set con = CreateObject("ADODB.Connection")
sDBConnectionString = Exceldb
con.ConnectionString = sDBConnectionString
con.Open

If Err.Number <> 0 Then
    For i = 1 to 4
        Err.Clear
        wait 5
        con.Open
        If  Err.Number = 0 Then
            msgbox "opened"
        End If
    Next
else
    msgbox "opened"
End If

strROW = "UNIXOPERATIONS_16"
strROWID = "'" amp; strROW  amp; "'"

strQuery = "INSERT INTO [Sheet3$A1:A1] (" amp; strROWID1 amp; ") Values(" amp; strROWID amp; ")"

Set strRecordSet = CreateObject("ADODB.Recordset")
Dim objCmd 'As New ADODB.Command
Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = con
objCmd.CommandType = 1
objCmd.CommandText = strQuery
Set strRecordSet = objCmd.Execute

con.Close
  

Комментарии:

1. Я полагаю , что вам нужно будет вставить значения заголовка в 1 выполненный запрос, а затем ваши фактические значения во втором. strQuery = "INSERT INTO [Sheet3$A1:A1] (" amp; strROWID1 amp; ") Values('Header_Text_Here)"

2. Я пробовал это, но он выдает ошибку «Оператор INSERT INTO содержит неизвестное имя поля». Это пустой рабочий лист, в который я копирую данные.

3. Это имеет смысл. Я бы просто удалил 1-ю строку. Range("Sheet3!1:1").Delete

4. Даже если это служит цели. После удаления будет ли 1-я строка выступать в качестве заголовка (который ранее был 2-м)?