#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-м)?