Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 590
от 14.08.2007, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 299, Экспертов: 45
В номере:Вопросов: 2, Ответов: 3


Вопрос № 97843: Уважаемые экперты! Есть задача: при помощи команды ndir выводится информация о домашних каталогах сетевых пользователей - нужна ин-фо только о квоте на каталог, занятом и свободном месте каталога....т.е. команда выглядит так : "ndir пут...
Вопрос № 97844: Добрый день! подскажите, пожалуйста, как в Экселе создать такой макрос, который с одного листа, переносит данные на другой лист, с учётом, что номера ячеек постоянные, а вот данные в них разные. например: данные из ячеек А3,А4, А5 на Лис...

Вопрос № 97.843
Уважаемые экперты!
Есть задача: при помощи команды ndir выводится информация о домашних каталогах сетевых пользователей - нужна ин-фо только о квоте на каталог, занятом и свободном месте каталога....т.е. команда выглядит так :
"ndir путь к каталогу SPA DO > C:1.txt"
Либо, если запускать непосредственно из каталога, то:
"ndir SPA DO > C:1.txt"
.....(это для вариаций с программой, вдруг вы предложите 2 разных решения...)
Но команда выводит инфу только по 1-му каталогу, т.е. на каждого юзера нужно запустить команду, вывести в файл инфу и потом это все слить в 1 файл(желательно в exсel), а пользователей более тысячи...
Собственно вопрос:-)
Как на VB автоматизировать этот процесс?.....можно код, если есть что-то подобное:-)
Буду очень благодарна за ответ...если что-то непонятно, пишите уточню...

Приложение:

Отправлен: 09.08.2007, 14:06
Вопрос задала: Iris (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Alexander N. Monastyrsky
Здравствуйте, Iris!
Для запуска приложения можно использовать Shell
Синатксис :
Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinstyle="AppWinStyle.MinimizedFocus," _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer
Запускает исполняемую программу и возвращает целочисленное значение, содержащее идентификатор процесса программы, если она все еще выполняется.
Тоесть ... (в приложении)
Взято с MSDN . :)
Учтите, что ndir - это не стандартное приложение Винды, соответственно, оно должно находиться в Win/System32 или указать полный путь к этому приложению.

Параметры
Pathname
Обязательный. String. Имя исполняемого файла со всеми необходимыми аргументами. Pathname может также содержать имя диска и путь.

Style
Необязательный. AppWinStyle. Значение, выбираемое из перечисления AppWinStyle, соответствующее стилю окна, в котором запускается программа. Если параметр Style опущен, Shell использует значение AppWinStyle.MinimizedFocus, запускающее программу в свернутом окне с фокусом.
Аргумент Style может принимать одно из следующих значений:

Значение Описание
AppWinStyle.Hide Окно скрыто, и фокус передан скрытому окну.
AppWinStyle.NormalFocus Окно получает фокус и отображается в своих предыдущих размере и позиции.
AppWinStyle.MinimizedFocus Окно отображается как значок и имеет фокус.
AppWinStyle.MaximizedFocus Окно получает фокус и развернуто во весь экран.
AppWinStyle.NormalNoFocus Окно восстанавливает свои последние размер и позицию. Активное в данный момент окно остается активным.
AppWinStyle.MinimizedNoFocus Окно отображается в виде значка в панели задач. Активное в данный момент окно остается активным.

Wait
Необязательный. Boolean. Значение, определяющее, должна ли функция Shell ожидать завершения выполнения программы. Если параметр Wait опущен, Shell использует False.
Timeout
Необязательный. Integer. Длительность в миллисекундах интервала, в течение которого ожидается завершение выполнения программы, если Wait равно True. Если параметр Timeout опущен, Shell использует-1, то есть таймаут не используется и Shell ожидает завершения выполнения программы. Таким образом, если вы опустите Timeout или установите его в -1, существует возможность, что Shell никогда не передаст управления вашей программе.

Приложение:

---------
Страшен Русский сервис, бессмысленный и беспощадный...

Ответ отправил: Alexander N. Monastyrsky (статус: 1-ый класс)
Ответ отправлен: 10.08.2007, 11:57


Вопрос № 97.844
Добрый день!
подскажите, пожалуйста, как в Экселе создать такой макрос, который с одного листа, переносит данные на другой лист, с учётом, что номера ячеек постоянные, а вот данные в них разные.
например:
данные из ячеек А3,А4, А5 на Листе1 надо перенести на Лист2
в ячейки С5, С6, С7.
данные в ячейках А3,А4,А5 - будут каждый раз разные.
названия листов, тоже будут меняться....
заранее благодарна!
Отправлен: 09.08.2007, 14:26
Вопрос задала: Шубейко Маргарита (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Alexander N. Monastyrsky
Здравствуйте, Шубейко Маргарита!
Вот ваше решение вопроса.
Вообще-то в Экселе меню "Сервис" - "Макросы" - "Начать запись"
Делаете то, что требуется и автоматически создается макрос.

Приложение:

---------
Страшен Русский сервис, бессмысленный и беспощадный...

Ответ отправил: Alexander N. Monastyrsky (статус: 1-ый класс)
Ответ отправлен: 09.08.2007, 14:58
Оценка за ответ: 5

Отвечает: Черников Игорь Владимирович
Здравствуйте, Маргариточка!
'Предисловие:Cells(i, j)- i-это порядковый номер строки в которой находится ячейка, j-порядковый номер столбца в котором находится ячейка
'т.е. Cells(1, 1) - это ячейка А1, а Cells(2, 3) - это ячейка С2 (2-это 2, а 3-это С).
'это для твоего примера из Лист1 А3-А5 в Лист2 С5-С7
For i = 3 To 5
Worksheets("Лист2").Cells(i + 2, 3) = Worksheets("Лист1").Cells(i, 1)
Next i

другой пример:
'а это для нескольких строк и столбцов(лист1 А3-В10 -> Лист2 С5-D12)
For i = 3 To 10
For j = 1 To 2
Worksheets("Лист2").Cells(i + 2, j + 2) = Worksheets("Лист1").Cells(i, j)
Next j
Next i

и ещё один:
' Если тебе ежедневно необходимо сохранять данные в разные листы, то можно создавать лист, в имени которого будет стоять дата, тогда код будет таким:
Sheets.Add
ActiveSheet.Name = Mid(Date, 1, 10) 'Если вместо 10 поставить 5, то год писаться не будет (и в третьей строке ниже, тоже)
For i = 3 To 10
For j = 1 To 2
Worksheets(Mid(Date, 1, 10)).Cells(i + 2, j + 2) = Worksheets("Лист1").Cells(i, j)
Next j
Next i

---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 3-ий класс)
Ответ отправлен: 09.08.2007, 18:26
Оценка за ответ: 5
Комментарий оценки:
ОГРОМНЕЙШЕЕ СПАСИБО!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное