Не вдаваясь в детали фактического кодирования, проблема с примером кода заключается в том, что вы не можете отправить выбранный SQL таблицы в AS / 400. AS / 400 не может видеть вашу электронную таблицу и, следовательно, не может загрузить данные из нее в одном SQL. Вместо этого вы должны прочитать все строки вашей электронной таблицы и вставить эти записи по одной в свою таблицу AS / 400. Параметризованный SQL предпочтителен.
Это часть кода, которая должна идти:
objConn.Execute "INSERT INTO MYAS400LIB. " & WS_Name & " SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=" & ThisWorkbook.FullName & ";HDR=YES;IMEX=1', 'SELECT * FROM [" & WS_Name & "$]')"
Это не сработает. Замените его циклом чтения строк в рабочей книге. Вы можете использовать набор OLEDB в Excel или читать электронную таблицу построчно. Внутри цикла для каждой прочитанной строки таблицы вам нужно будет написать инструкцию INSERT INTO, которая будет выполняться через ODBC, в AS / 400.