1 (изменено: Oki2, 2011-03-21 17:27:57)

Тема: VBS: API Excel

Добрый день!
Есть следующая задача – выводить в excel спецификацию изделий из электротехнического САПР (e3.series). Как забрать из e3.series я знаю , благо API хорошо описан в хелпе. Как создать excel и выплюнуть в ячейки тоже знаю, учили. Но вот загвоздка:
1) Как в книге Excel создать новый лист копированием другого листа в этой книге?
2) И вытекающий из первого вопрос: где взять описание api excel? Может, кто встречал, хотяб частями…
Буду признателен за любой пинок в нужном направлении.

2

Re: VBS: API Excel

Oki2 пишет:

... Как в книге Excel создать новый лист копированием другого листа в этой книге?..

Например, так:

Worksheets("Лист1").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = "Новый_лист"
Oki2 пишет:

... где взять описание api excel?..

Если под "api excel" подразумевается объектная модель Excel, то в справке по VBA для этого приложения, разумеется.

3

Re: VBS: API Excel

Oki2, поиск по Excel.Application даёт на первой же странице:
Объект Excel . Application , его свойства, методы и события - AskIt.RU
Excel Object Model Overview
Ну, а, Object Model конкретно под Вашу версию — коллега Dmitrii выше уже озвучил.

4

Re: VBS: API Excel

Спасибо за ответы.
Насколько я понял это кусок макроса. После вставки приведенного кода в мой уже HTA с крипт выдает ошибку:
Предполагается наличие инструкции
(ругается на строчку Worksheets(WorkSheets(1)).Copy After:=Worksheets(Worksheets.Count) )
Вобщемто логично – пробел vbs не хочет понимать….
Как правильно преобразовать указанный макрос в VBS?
Код:

            set ExcelApp = CreateObject("Excel.Application")
            set Excel    = ExcelApp.WorkBooks.Open(srtPath4)
            set Excel    = ExcelApp.ActiveWorkBook.WorkSheets(1)
            
            Worksheets(WorkSheets(1)).Copy After:=Worksheets(Worksheets.Count)
                                                Worksheets(Worksheets.Count).Name = "new"

5

Re: VBS: API Excel

Oki2 пишет:

Насколько я понял это кусок макроса...

Да.

Oki2 пишет:

... После вставки приведенного кода в мой уже HTA...

В вопросе не было сказано ни слова об использовании HTA или чего-то подобного. Цитирую: "Как в книге Excel создать новый лист копированием другого листа в этой книге"?
В таких случаях обычно говорят: "Телепаты ушли на другой форум".

Oki2 пишет:

... скрипт выдает ошибку...

1. В сценариях нельзя использовать символические псевдонимы объектной модели приложения (в данном случае это выражение After:=). Нельзя также использовать и произвольный порядок задания необязательных параметров.
2. Пример корректного кода сценария:

Set objExcel = CreateObject("Excel.Application")
'objExcel.Visible = True
Set objWB = objExcel.WorkBooks.Open(srtPath4)
objWB.WorkSheets(1).Copy ,objWB.Worksheets(objWB.Worksheets.Count)
objWB.Worksheets(objWB.Worksheets.Count).Name = "Новый_лист"

6

Re: VBS: API Excel

Dmitrii, мне понравилось определение:

…символические псевдонимы объектной модели приложения

Это официальный термин? Поскольку раза два-три на моей памяти подобные вопросы задавались — я хочу поместить в Коллекцию краткое пояснение про разницу в программном коде VBScript и VBA, дабы можно было затем на эту статью ссылаться.

7

Re: VBS: API Excel

alexii пишет:

... Это официальный термин?..

Нет.

8

Re: VBS: API Excel

Огромное спасибо за ответ!
Долго бы сам мыкался.
Осталось правда пара непоняток:
Где все так взять ВЕСЬ перечень команд для excel?
Было бы выходом сначала делать «действия» в excel и получать макросы а потом их вставлять vbs, но с однозначной логикой преобразования макросов для vbs тоже проблемы как я понял…
Но в любом случае спасибо

9

Re: VBS: API Excel

Oki2, #2 и #3. Полнее нет.

10

Re: VBS: API Excel

Oki2, добавлю про #2, если вдруг Вы не поняли:
* находясь в редакторе Visual Basic for Application Вы нажимате F1;
* в окне Справка Visual Basic, прямо в Оглавлении, Вы нажимаете ссылку «Microsoft Excel Visual Basic Reference», затем «Microsoft Excel Object Model».

Если и это не помогло — выполните:

hh.exe mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1049\vbaxl10.chm::/html/xltocOMMap.htm

Всё вышеизложенное справедливо для Microsoft Office 2003.

11

Re: VBS: API Excel

alexii пишет:

Oki2, добавлю про #2, если вдруг Вы не поняли:
* находясь в редакторе Visual Basic for Application Вы нажимате F1;
* в окне Справка Visual Basic, прямо в Оглавлении, Вы нажимаете ссылку «Microsoft Excel Visual Basic Reference», затем «Microsoft Excel Object Model».

Если и это не помогло — выполните:

hh.exe mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1049\vbaxl10.chm::/html/xltocOMMap.htm

Всё вышеизложенное справедливо для Microsoft Office 2003.

Исчерпывающе. Спасибо!