Добавление строк в Excel через ADO - PullRequest
0 голосов
/ 28 августа 2018

У меня проблема с обновлением листа Excel с помощью ADO через VBScript.

Рабочая тетрадь содержит 3 листа: Лист1, Лист2 и Лист3.

Я использую методы «INSERT» и «AddNew» для обновления каждого листа.

Если строка заголовка содержит более одного столбца, формат строки заголовка сохраняется в новых строках.

Если строка заголовка содержит только один столбец, то строка пропускается, но формат строки заголовка не сохраняется в новых строках.

Это не имеет смысла! Любая помощь будет оценена.

Приложено изображение сценария и полученные листы.

    Option Explicit
'****
'*  Test updating (INSERT and ADDNEW) an MS-Excel worksheet using ADO.
'****
    Dim oADO
    Set oADO = CreateObject("ADODB.Connection")
        oADO.Mode = 3 '=adModeReadWrite
        oADO.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=YES;IMEX=1,ReadOnly=False';Data Source=excel.xls"
       '*
        oADO.Execute   "INSERT INTO [Sheet1$] (Comment) VALUES ('INSERT')"
       '*
        oADO.Execute   "INSERT INTO [Sheet2$] (Comment) VALUES ('INSERT')"
       '*
        oADO.Execute   "INSERT INTO [Sheet3$] (Comment) VALUES ('INSERT')"
    Dim oRST
    Set oRST = CreateObject("ADODB.Recordset")
        oRST.ActiveConnection = oADO
        oRST.CursorType = 2 '=adOpenDynamic
        oRST.LockType = 2 '= adLockPessimistic
       '*
        oRST.Open "SELECT * FROM [Sheet1$]"
        oRST.AddNew
        oRST.Fields("Comment").Value = "ADDNEW"
        oRST.Update
        oRST.Close
       '*
        oRST.Open "SELECT * FROM [Sheet2$]"
        oRST.AddNew
        oRST.Fields("Comment").Value = "ADDNEW"
        oRST.Update
        oRST.Close
       '*
        oRST.Open "SELECT * FROM [Sheet3$]"
        oRST.AddNew
        oRST.Fields("Comment").Value = "ADDNEW"
        oRST.Update
        oRST.Close
    Set oRST = Nothing
        oADO.Close
    Set oADO = Nothing

код VBScript и результаты в таблицах

1 Ответ

0 голосов
/ 07 сентября 2018

Это потому, что файл уже существует и там уже есть некоторые пустые данные? Я попробовал версию вашего скрипта, которая запускает CREATE TABLE для создания рабочих таблиц перед вставками, и я не вижу пустых строк.

Option Explicit

dim fso: set fso = CreateObject("Scripting.FileSystemObject")
if fso.FileExists("excel.xls") then
    fso.DeleteFile "excel.xls"
end if


'****
'*  Test updating (INSERT and ADDNEW) an MS-Excel worksheet using ADO.
'****
Dim oADO
Set oADO = CreateObject("ADODB.Connection")
    oADO.Mode = 3 '=adModeReadWrite
    oADO.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=YES;IMEX=1,ReadOnly=False';Data Source=excel.xls"

oADO.Execute "CREATE TABLE Sheet1 (comment text)"
oADO.Execute "CREATE TABLE Sheet2 (comment text)"
oADO.Execute "CREATE TABLE Sheet3 (comment text)"


   '*
    oADO.Execute   "INSERT INTO [Sheet1$] (Comment) VALUES ('INSERT')"
   '*
    oADO.Execute   "INSERT INTO [Sheet2$] (Comment) VALUES ('INSERT')"
   '*
    oADO.Execute   "INSERT INTO [Sheet3$] (Comment) VALUES ('INSERT')"
Dim oRST
Set oRST = CreateObject("ADODB.Recordset")
    oRST.ActiveConnection = oADO
    oRST.CursorType = 2 '=adOpenDynamic
    oRST.LockType = 2 '= adLockPessimistic
   '*
    oRST.Open "SELECT * FROM [Sheet1$]"
    oRST.AddNew
    oRST.Fields("Comment").Value = "ADDNEW"
    oRST.Update
    oRST.Close
   '*
    oRST.Open "SELECT * FROM [Sheet2$]"
    oRST.AddNew
    oRST.Fields("Comment").Value = "ADDNEW"
    oRST.Update
    oRST.Close
   '*
    oRST.Open "SELECT * FROM [Sheet3$]"
    oRST.AddNew
    oRST.Fields("Comment").Value = "ADDNEW"
    oRST.Update
    oRST.Close
Set oRST = Nothing
    oADO.Close
Set oADO = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...