|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.12.2011, 16:26 | #1 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
Как на VBScript написать перенос массива в Excel ?
Здравствуйте, мэтры программисты!
Я не имею большого опыта написания в VBScript. Сейчас пишу (надо написать) макрос для специализированной программки, в процедуре несколько циклов, в начале я оглашаю размер формируемого массива, и в процессе расчётов он заполняется. Как вывести его в конце (после отработки макроса) в Ексель? ВОПРОС: какие заклинания надо написать чтобы сам формировался ( в процессе выполнения макроса) лист Екселя с заполняемыми столбцами? Выглядит дело так: r=setlocale("en-us") Sub shag=0 Dim A(1000) B(1000) C(1000) (команда на выполнение спец.программкой расчета, выполняется расчет) А(shag)=(выполняется присвоение) В(shag)=(выполняется присвоение) С(shag)=(выполняется присвоение) shag=shag+1 if end if for i=0 to максимальное число итераций if (опускаю подробности) end if (команда на выполнение спец.программкой расчета, выполняется расчет) А(shag)=(выполняется присвоение) В(shag)=(выполняется присвоение) С(shag)=(выполняется присвоение) shag=shag+1 next if (опускаю подробности) end if for j=0 to максимальное число итераций if end if (команда на выполнение спец.программкой расчета, выполняется расчет) А(shag)=(выполняется присвоение) В(shag)=(выполняется присвоение) С(shag)=(выполняется присвоение) shag=shag+1 next End Sub Всё собственно... Хочется получить в Екселе эти три столбца (или в виде строк) заполненные A, B и C (со значениями образованными для каждого шага рачета). !!! Я написала для вывода следующее: Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True for shag=1 to 1000 xlSheet.Cells(shag, 1).Value = A(shag) xlSheet.Cells(shag, 2).Value = B(shag) xlSheet.Cells(shag, 3).Value = C(shag) shag=shag+1 next xlSheet.SaveAs "C:\TEST.XLS" Но в результате выскакивает лист Екселя, НО пустой! - С табличкой об ошибке: Type mist.. "А" |
07.12.2011, 21:19 | #2 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
Код:
Тишина – самый громкий звук
|
07.12.2011, 21:35 | #3 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
СПАСИБО БОЛЬШОЕ, NERV !!!
завтра на работе попробую это сделать! две недели мучаюсь, думаю, туплю... ОБЯЗАТЕЛЬНО ОТПИШУ О РЕЗУЛЬТАТЕ!!! |
07.12.2011, 21:46 | #4 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
NERV, я сделала всё так (просто ctrl copy), получилось вот что:
первый столбец от 1 до 10 ячейки заполнен единичками, второй столбец пустой, третий столбец с 1 по 10 - тоже (как и первый) единички . Сижу, смотрю на результат, и родились 5 вопросов: 1) когда ты написал Dim х - это мне следует дословно так написать? (или всё-таки Dim А(1000) В(1000) С(1000)... или как?) 2) ты написал "запись на лист" и "вывод масива на лист" - это одно и тоже? зачем 2 раза? 3) почему ты сам задал значение (value) равно 1? (надо ведь чтобы Excel сам как-то тянул значение из сформированного в макросе массива... может в макросе надо прописать как-то чтобы сохранялся заполняемый массив?... ) 4) почему ты написал А1:А10 ? а чуть ниже еще С1? (плохо различаю, как обозначены искомые 3 столбца, и где прописывается размерность? у меня должно быть 1000 ячеек в столбце); 5) в листе Excel нужно отразить заголовки столбцов (А,В,С) ... (а заголовков не появилось...) Напиши как надо сделать, пожалуйста, в моих обозначениях, я не сильна в этом, ей-богу, хоть вешайся... Последний раз редактировалось Софико; 08.12.2011 в 13:45. Причина: появились новые вопросы, а ответа ещё не было... |
08.12.2011, 16:26 | #5 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
Софико, будет проще, если Вы полностью выложите код скрипта. Надеюсь, он не очень большой А еще лучше, если приложите файл с примером.
Тишина – самый громкий звук
|
09.12.2011, 11:41 | #6 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
Привет, добрый человек!
Окей, не хотела пугать, потому написала его в первом сообщении в упрощенном виде, на самом деле в массиве 15 столбцов должно быть, а не 3. В программе Rastr (для которой этот макрос) есть возможность диалога (задание параметров для макроса перед его срабатыванием в программе - это в самом низу после слов End Sub увидишь). Вот он полностью во вложении. Последний раз редактировалось Софико; 09.12.2011 в 11:44. |
09.12.2011, 17:34 | #7 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
Софико, итак, поехали...
1. Объявляйте тип переменных (если это возможно). Это значительно облегчит Вам жизнь при отладке, вдобавок поведение программы будет более предсказуемым. Я говорю от этой строке: Код:
2. В этой строке вы создаете 15 массивов и устаналиваете каждому из них размерность 1000. (по факу массив будет содержать 1001 элемент, если что) Код:
Код:
Дальше вникать не стал, поскольку: а) не знаю поставленной задачи; б) не знаком с объектной моделью приложения, кот. Вас интересует.
Тишина – самый громкий звук
|
09.12.2011, 17:41 | #8 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
NERV, я по порядку:
1. "Объявляйте тип переменных " ммм... эти переменные - по сути вводимые в диалоговом режиме номера, они не меняются в процессе макроса (они задаются у меня в диалоговом режиме перед пуском макроса)... тут мне кажется и добавить нечего... 2. "Может проще будет обойтись одним двумерным?" .... ну положим, мне не принципиально, пусть двумерный 3. "В таком случае значительно проще будет с выгрузкой в Excel." Проще - это хорошо)) , я согласна на проще, только мне всё равно пока неясно, - что же мне надо прописать под макросом-то для выгрузки в Ексель??? PS: в программу я и не хотела что бы вдумывались, она для расчета электрических режимов сетей! я потому и представила сначала упрощенный вариант макроса, просто принцип переноса понять хочется, опыта никакого... Последний раз редактировалось Софико; 09.12.2011 в 22:10. |
09.12.2011, 17:48 | #9 |
Подтвердите свой е-майл
Регистрация: 30.11.2011
Сообщений: 17
|
PPS:
я даже уже сообразила, получила в открывающейся сраничке Екселя названия 15 массивов (т.е. первая строчка Екселя уже занята заголовками) - хоть что-то получилось... Заголовки встали благодаря заклинанию: Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True xlSheet.Cells(1, 1).Value = "Pn1" xlSheet.Cells(1, 2).Value = "Qn1" xlSheet.Cells(1, 3).Value = "Pn2" xlSheet.Cells(1, 4).Value = "Qn2" xlSheet.Cells(1, 5).Value = "Pn3" xlSheet.Cells(1, 6).Value = "Qn3" xlSheet.Cells(1, 7).Value = "Pn4" xlSheet.Cells(1, 8).Value = "Qn4" xlSheet.Cells(1, 9).Value = "Un" xlSheet.Cells(1, 10).Value = "UnNOM" xlSheet.Cells(1, 11).Value = "delta" xlSheet.Cells(1, 12).Value = "Ushbm" xlSheet.Cells(1, 13).Value = "UshbmZAD" xlSheet.Cells(1, 14).Value = "Pshbm" xlSheet.Cells(1, 15).Value = "Qshbm" xlSheet.SaveAs "C:\TEST.XLS" ___________________________________ _________ Эххх, мне теперь сам массив (двумерный как договорились) вынести под эти заголовки (соответственно со второй строчки должен начать вставляться) - вот как бы это сделать... Последний раз редактировалось Софико; 09.12.2011 в 22:11. |
10.12.2011, 11:06 | #10 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
Софико, прошу прощения, был не прав. Вроде как VBScript поддерживает только один тип данных - Variant.
Попробуйте запустить пример из файла. После открытия Excel нажмите Ctrl+End. Код:
Тишина – самый громкий звук
Последний раз редактировалось nerv; 10.12.2011 в 11:08. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как написать и визуализировать программу в Excel | friga | Помощь студентам | 1 | 06.04.2011 11:10 |
Как написать макрос в Excel???? | Маська | Помощь студентам | 1 | 10.11.2010 16:36 |
Как написать из excel формулу в word | Святой Дьявол | Microsoft Office Excel | 1 | 13.09.2010 22:07 |
как написать формулу Excel | ROBERT033 | Microsoft Office Excel | 3 | 13.02.2009 23:21 |
Простой максор. Excel. Как написать. | prosims | Microsoft Office Excel | 7 | 07.06.2007 17:06 |