Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Обьекты и их свойства, Задать свойства обьекту
 
Здравствуйте специалисты по Excel и Vba
Скажите пожалуйста, возможно ли задать свойство обьекта в виде переменной?

Простейший пример -

.Cells(15, 1).Font.Bold = True

Можно ли вместо свойства Bold указать переменную, чтобы сделать цикл по свойствам и подставлять разные свойства (Italic, Underline)
Как будет в этом случае выглядеть формат строки?
.Cells(15, 1).Font.[Переменная] = True
PowerShell через VBA и Excel, проверка доступности устройств по списку
 
Цитата
написал:
Цитата
написал:
Проблема в том, что результат выполнения команды TNC вполне себе TRUE
а как Вы определили, что TRUE ? (Добрый день)

PS

Выполнение кода
Код
    [URL=#]?[/URL]       1  2  3  4  5  6      Sub   проба()    Dim   a, b    Set   a = CreateObject(  "WScript.Shell"  )       b = a.Run(  "PowerShell TNC MyHost CommonTCPPort RDP -InformationLevel Quiet"  , 0,   True  )    End   Sub   
  у меня на ПК вернуло b=1
Сделайте  
Код
    [URL=#]?[/URL]       1      dim b as boolean   
  вернет TRUE/FALSE
Вот! Всплыл интересный нюанс. Дело в том, что я немного некорректно дал вам строчку, упустил знак "-" перед CommonTCPPort. Это вызывает ошибку формата. И да, действительно, в этом случае b=True. То есть у нас тривозможные варианта - порт открыт, порт закрыт, ошибка формата. К сожалению, в переменную возвращается TRUE только при ошибке формата команды, на остальные два варианта он реагирует FALSE, то есть если команда верная, вне зависимости от наличия или отсутствия хоста в сети, атакже открыт у него проверяемый порт или нет, будет FALSE.

Вопрос остается, как разделить? Ведь в консоль-то PowerShell возвращается TRUE, если проверка положительна, FALSE, если проверка отрицательна и отдельно ругань, если формат команды неверен.

Есть мысли?
PowerShell через VBA и Excel, проверка доступности устройств по списку
 
Ну как определил что True, обычным путем, параллельно запустил сеанс PowerShell и все комманды сначала там прогоняю, чтобы перед глазами был результат.
Эту команду ввожу, получаю ответ TRUE, то есть порт RDP на данном хосте открыт. Потом меняю порт на закрытый, к примеру 21 (FTP) , снова прогняю, но значение переменной не меняется.
А вот пинг например вот такой - p = a.Run("PowerShell ping -n 1 -w 1000 MyHost", 0, True) нормально отрабатывает, активные хосты, b=0, нективные хосты b=1
Насчет определить b как Boolean я конечно же проделывал уже. Тот же результат.
Впечатление такое что почему-то TNC не возвращает значение или возвращает его в таком виде, что чего-то не хватает чтобы его получить.

Можно еще так b = a.Run("powershell (test-netconnection MyHost -port 3389).TcpTestSucceeded", 0, True)
Но тоже, увы
PowerShell через VBA и Excel, проверка доступности устройств по списку
 
Добрый день экспертам по EXCEL.
Хочу сделать наглядную таблицу со списком разных TCP устройств и сразу запустить проверку доступности этих устройств по разным портам,
в сети они или нет. Для этото использую PowerShell и командлет TNC (Test-NetConnection). Выглядит так -

Dim a, b
Set a = CreateObject("WScript.Shell")

b = a.Run("PowerShell TNC MyHost CommonTCPPort RDP -InformationLevel Quiet", 0, True)

Проблема в том, что результат выполнения команды TNC вполне себе TRUE, не присваивается переменной b.
Вся движуха пролетает как-то мимо этой b. То есть Run отрабатывает, проверка идет, все корректно, оболочка
открылась/закрылась, а переменная как была 0 так им и осталась.

Помогите пожалуйста, подскажите, кто знает, как вытащить результат выполнения PowerShell в переменную.

Вот с пингом такая штука работает, правда там без powershell, но какая разница, ведь все равно через Run запускается.
Календарь, вставить дату в ячейку
 
Здравствуйте!
Знаю, что тема календаря уже много раз пройдена, но есть еще один вопрос, пожалуйста.
Я добавил на лист календарь из офисного магазина (Вставка -> Надстройки -> Мои надстройки -> XLTools.net Calendar)
Инструмент хороший.

Вопрос - а можно ли им управлять из макроса? Имя он себе дает присвоить, а можно к нему обратиться из кода? Например установить ему свойство видимый-невидимый, скрыть когда курсор не в той колонке, где даты нужно вводить? Ну и задавать ему координаты появления на экране, чтобы оказывался недалеко от той ячейки, куда нужно ввести дату? То есть я хочу сказать, что не собираюсь влиять на его функции, а просто погонять его по экрану и показывать/прятать когда нужно
VBA, как обойти промежуточное окно при записи файла, работа с файлами (создание, редактирование, сохранение) средствами VBA
 
Супер! Спасибо большое. Отключил окно!
VBA, как обойти промежуточное окно при записи файла, работа с файлами (создание, редактирование, сохранение) средствами VBA
 
Здравствуйте уважаемые специалисты по Excel!

Подскажите пожалуйста, если кто знает. Проблема следующая
В программе на VBA в шаблон записываю данные и сохраняю их в виде отдельных файлов excel в цикле. Все хорошо, но вот с приходом обновления в этом году всякий раз при сохранении файла выскакивает промежуточное сообщение содержания "Будьте внимательны! В документе могут быть персональные данные, которые невозможно удалить с помощью инспектора документов". И приходится сидеть и руками нажимать кнопку OK.

Может кто знает, есть способ в VBA в команде Save ключ какой-нибудь прописать чтобы сразу согласиться, или еще какой способ?
Недоступны элементы ActiveX
 
Ну вот пришла очередная шляпа - теперь на этот раз Security Update for Microsoft Office 2010  KB3054873.
Убирайте это обновление чтобы в 2003 excel заработали ActiveX
Выполнение макроса в фоновом режиме
 
Здравствуйте!

У меня вопрос - есть ли возможность работать на листе excel в то время, пока на ней выполняется некий макрос?
Ну к примеру пользователь корректирует ячейки, а макрос следит за их содержанием и, по условию, выполняет действие.
То есть, скажу прямо, если пользователь ввел некие данные в ячейку, ячейка начинает сигналить изменением цвета в зависимости от введенных данных.
Или это в принципе невозможно?
Суммирование ячеек, непонятное поведение Excel
 
про умножение на 1 я думал, пробовал, но оно не помогло.
Суммирование ячеек, непонятное поведение Excel
 
ikki
А вот это интересно. Как вы определили где empty, а где - пустая строка?
И как разом убрать пустую строку?
Суммирование ячеек, непонятное поведение Excel
 
Я согласен, цифрами и я могу. Но мой пользователь, который ко мне обратился, имеет эту таблицу в огромном размере, это я просто уменьшил ее до размера проблемы.
Пробовали менять формат - не помогает. Помогает прощелкать ячейки F2 без изменения содержимого.
Впечатление такое, что да, в ячейках какой-то знак посторонний. Но его не видно. Я думал что пробел, но нет.
И там не очень удобно цифры ставить, там громадная таблица, поле большое, и цифры разбросаны по ней редко.
Тогда вопрос уточняющий - как можно на такое поле сделать вставку нулей к примеру в пустые ячейки? Но чтобы не затереть те, где цифры, а нули попали только туда, где нет цифр.
Я понимаю что макросы могут все, но есть ли какой-то штатный способ с помощью готовых функций?
Изменено: MSeg1968 - 22.05.2015 12:36:34
Суммирование ячеек, непонятное поведение Excel
 
Здравствуйте!
Есть вопрос, подскажите пожалуйста, кто сможет

простая таблица.
Суммирую автосуммой кучу ячеек в столбце - все OK
но если записываю сумму некоторых ячеек, т.е A27+A28+A29+A30 из того же столбца, то в результате ошибка #Знач

файл прикладываю.Не могу понять почему в строке 42 сумма работает, а в 45 - нет
Недоступны элементы ActiveX
 
Отмахаться врядли удастся. Надо обратиться к сисадминам, чтобы они на сервере обновлений WSUS поставили это обновление в список отзываемых, тогда обновление будет "наоборот" - на каждом компе это обновление будет специально искаться для удаления.
Изменено: MSeg1968 - 21.05.2015 16:03:45
Недоступны элементы ActiveX
 
По поводу дискутируемой проблемы, совет прежний - ищите обновления KB2920813 и KB2965291 и неважно, когда они прилетели. У вас, как я посмотрю, сплошные парадоксы. Хотелось бы помочь, но не знаю как.
Но очень бы хотелось помочь, честно говорю.
Изменено: MSeg1968 - 20.05.2015 09:37:38
Недоступны элементы ActiveX
 
Про систему я имел в виду, что совокупность макросов, кнопок и других объектов превращает простой эксельный файл в систему по обработке данных.
По подводу вашего парадокса я ничего не могу сказать кроме того, что просто снимаю шляпу и отхожу в сторону. У меня на предприятии когда пришло обновление, посыпались абсолютно все рабочие места, а их с десяток,  с программным комплексом на excel 2003 и activex. Ну может я хреновый программер, ну пользователь я точно неплохой. Вот это был шок, я просто не знал что делать и куда бежать. Никакие батники, описанные в форумах мне не помогали, пока не нашлось это KB.
Можете мне дать свою версию, пожалуйста, я выслушаю с интересом, мне очень хотелось бы понять перспективы дальнейшей работы в среде 2003 с activex.  
Изменено: MSeg1968 - 19.05.2015 22:32:21
Недоступны элементы ActiveX
 
Тогда чудеса, снимаю шляпу.
У меня в марте сдохли ActiveX после того, как пришло обновление 2920813, т.е. даже на чистом листе, новом в Excel 2003 при попытке создать простой списочек (перетащить элемент "список ") из меню VB, сразу возникало сообщение "невозможно создать объект" или что-то в этом духе.
Это объяснялось латанием дырки ActiveX. лечилось удалением этого обновления. 14 мая пришло очередное - 2965291, те же симптомы, удалил - опять работают элементы.
Вобщем мы это обсуждали выше, посмотрите немного вверх.  
Недоступны элементы ActiveX
 
Просто есть проекты. сделанные в Excel 2003, которые используют ActiveX и установлены на компьютере вместе с приложениями из пакета 2010, например с excel или outlook.
И вот в этих проектах, сделанных в 2003, перестают работать все элементы вашего интерфейса - окна, списки, кнопки, все то, что запускает ваши макросы и делает систему.
Недоступны элементы ActiveX
 
Да, опять майкрософт нагадил.
Сносите на этот раз обновление Офиса 2010 KB2965291 - все починится. Но уже ясно, что ненадолго. К сожалению, похоже, что с ActiveX и MS Excel 2003 придется распрощаться. Эпоха закончилась.
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
я в access втягивал эту таблицу, ну и писал там просто
Код
   db.Execute ("INSERT INTO Perem ( Tab, Name, Source, Target, TargetID, Dat, Stat ) " _
        & "SELECT '" & WS.Cells(i, 2) & "', '" & WS.Cells(i, 3) & "', '" _
        & WS.Cells(i, 5) & "','" & WS.Cells(i, 6) & "', '" & [B][SIZE=10pt]WS.Cells(i, 7)[/SIZE][/B] & "','" _
        & WS.Cells(i, 8) & "', '" & WS.Cells(i, 4) & "';")

А теперь поставил  WS.Cells(i, 7).Text и все поехало правильно!!!!
Что характерно, не спросил бы - никогда бы не додумался
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
Ура! Все отлично, все было на поверхности - оказывается cell.Text возвращает то, что надо! Я и подумать не мог, элементарно!
Я думал, что надо форматом как-то выкручиваться, а тут оказывается все так просто.
Но зато я узнал несколько новых штук
Большое спасибо за помощь!
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
уточняю вопрос
Есть ли какой-то способ считывать через макрос содержимое ячейки и на лету преобразовывать этот формат, чтобы не совершать манипуляций на самом листе.
Я просто пока решил попробовать, подобрать формат команды, поэтому и перенес значения из одной ячейки в другую.
В рабочей ситуации мне нужно научиться читать ячейку в виде 00000000000455
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
согласен, в виде функции работает. Спасибо огромное, это прорыв, я не знал такого приема.

Но мне нужно вот что - я не хочу трогать таблицу, у меня отчет выгружается в excel и потом я считываю его процедурой в Access.
Стал тренироваться преобразовывать формат по вашему примеру, решил по наивности что можно вот так

.Cells(i, 9) = CStr(Format(.Cells(i, 7).Value, .Cells(i, 7).NumberFormat))

То есть в цикле перебросить значение из одной ячейки, где формат 000000000455 в другую, чтобы значение перенеслось 000000000455
Вот это и не сработало.
Можете подсказать, возможен такой ход? Чтобы без функции
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
не сработало.  
Формат ячейки - значение в ячейке, VBA импорт-экспорт таблиц
 
Здравствуйте! Подскажите пожалуйста, кто знает

исходные данные
- ячейка на листе отформатирована пользовательским форматом. Так сработала процедура экспорта из некоей программы. Ничего не поделаешь
Выглядит к примеру так  - 000000000458
Но если брать значение этой ячейки, то получается - 458. И никак не обходится.
Что нужно
- нужно откуда-то считать именно 000000000458. Когда я пытаюсь выполнить импорт в БД, то импортируется, 458 вместо 000000000458
То есть проблема в том, что 000000000458 я могу лишь видеть, а все операции осуществляются с 458. Причем в строке значений (та. что сверху на панели) отображается 458, т.е. уже не то, что на экране.  
Недоступны элементы ActiveX
 
Подразумевается, я так думаю, что если перенести какой-то проект, созданный в апдейтировнной машине на неапдейтированную, то ActiveX отключатся. Это конечно бред, т.к. придется теперь работать с дикой оглядкой на апдейты, если создаешь проекты для сторонних заказчиков. надо будет отдельно оговаривать условие наличия и присутствие апдейтов на машинах, а если их нет, то выборочно ставить.
Вообщем да, работа с ActiveX накрывается тазом, это очевидно совершенно. Я думаю, мож таскать тогда с машины на машину эту FM20.dll и подменять ее всегда? Надо будет попробовать.
Недоступны элементы ActiveX
 
Есть еще информация. Наш головной офис имеет выделенную поддержку майкрософт, я обращался и туда. Ответ из самой конторы выглядит так -

Этобыло обновление безопасности, которое было в срочном порядке выпущено, так как
была найдена уязвимость в объектах
ActiveX.
Обновление подменяет библиотеку FM20.dll из папки
C:\Windows\SysWOW64.

Если апдейт встал нормально, то
можно обратиться к вот этой статье -
https://support.microsoft.com/en-us/kb/3025036/
Там все расписано и есть набор
обновлений, которые фиксят эту проблему.

Если апдейт не встал как надо –
придется ковыряться и смотреть/сносить/стаить снова.


+ обязательно надо учесть вот
что: если файл (с объектами
ActiveX) был сделан
на машине, где новый апдейт уже установлен – этот файл не будет работать на тех
машинах, где этого апдейта нет. Поэтому обязательно ставить обновление на все
машины в инфраструктуре.
Недоступны элементы ActiveX
 
Ну вот хоть режь меня, хоть расстреляй, но не помог мне этот метод. Этот батник гуляет по всем форумам, я делал его, потом из командной строки тоже по шагам, т.к. доступы не во все папки были. Ничего не срабатывало. да и вообще нашелся всего один файл - Forms.exd. Остальных не было.
Мне помог только отзыв обновления, больше ничего. Кстати про этот "костыль" я нигде не смог прочитать, что-то мне не кажется что это "известно достаточно давно". Я вышел на него почти случайно, зацепился за разъяснения на сайте майкрософт.
Недоступны элементы ActiveX
 
Alex_ST
Хорошо, тогда, прошу пожалуйста поясните ваше решение, которое вы описали выше. Что надо удалить из командной строки и при чем тут персональные настройки кнопок? У меня например споткнулось все на текстовом окне, вернее начало спотыкаться. До кнопок персональных не дошло.
Что нужно сделать?  
Недоступны элементы ActiveX
 
Самое последнее решение после долгого подбора и изучения результатов
Как раз обновление офиса KB290813, которое ставится на SP2 и есть проблема.
стоило его отозвать и сразу снялась блокировка ActiveX.
Помогал конечно и отзыв целиком офисного SP2, т.к. при отсутствии его, обновление 290813 утрачивало силу, но удаление пака это излишнее действие.
В итоге - удаляйте KB290813 и ActiveX вернутся и на 2003 и на 2010 (у меня оба excel) стоят.
Страницы: 1
Наверх