Страницы: 1
RSS
Имитация двойного щелчка мыши
 
Есть защищенный файл Excel. По двоному клику на ячейке (объединенных ячейках) выполняется макрос (добавляются строки).  
 
Нужно автоматически добавить N-е количество строк. Пытаюсь имитировать двойной щелчок в макросе.  
 
...Cells(10,15).Select  
Excel.Application.DoubleClick  
 
Вторая строка должана имитировать двойной щелчок мыши на ячейке. Но, ничего не происходит. Даже если делаю тоже самое на чистом незащищенном файле, то при помощи этой функции я должен входить в режим редактирования ячейки (как по двойному щелчку). Но, этого тоже не происходит.  
 
Помогите, пожалйста, разобраться.  
 
Спасибо!
 
Ничего не понял, зачем нужна какая то имитация?если можно повесить макрос на событие двойное нажатие внутри нужного листа
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Так у Вас небось Эксель локализованный! Надо писать:  
Excel.Application.ДвойнойЩелчок
Я сам - дурнее всякого примера! ...
 
Попробовал. Не помагает. Выдает ошибку.
 
Я плакалъ...
Я сам - дурнее всякого примера! ...
 
:-) dmention, а зачем его (двойной щелчок) имитировать? Почему его нельзя просто выполнить? В чём основная задача?
 
Есть защищенный файл Excel. Защитил его не я. По двойному клику на ячейке (объединенных ячейках) выполняется макрос (добавляются строки).  
 
Нужно автоматически добавить N-е количество строк. Т.е. на конкретной ячейке нужно сделать N-е количество двойных щелчков. Чтобы руками не щелкать, хочу сделать через макрос.  
 
А есть вариант хотя бы как-то вызвать событие двойного щелчка, на которое сработает макрос?
 
Вариант: по даблклику вызываем InputBox, где указываем нужное количество.
 
Юр, я так понимаю проект ВБА тоже защищен. Если нет, то я на грани истерики:-) Единственный способ перевести ВЕСЬ проект на язык локали. Тогда точно сработает. И побольше комментов. Как машина поймет - что надо делать?
Я сам - дурнее всякого примера! ...
 
Мне тоже неизвестно - защищён или нет :-) dmention, на этой странице есть похожая тема: <BR> http://www.planetaexcel.ru/forum.php?thread_id=45369
 
Файл полностью защищен, в том числе и код.  
 
Вы попробуйте у себя просто сделать макрос:  
 
Sub Макрос1()  
Worksheets("Лист1").Activate  
Application.DoubleClick  
End Sub  
 
По описанию Microsoft, при выполнении должен совершаться двойной щелчок по текущей ячейке и вход в режим редактирования ячейки. Но, ничего не происходит.  
 
Почему? В этом весь вопрос. Поиски в интернете показывают, что я не один кто задавался этим вопросом. Но, ответа не предлагается.
 
{quote}{login=dmention}{date=23.09.2012 10:14}{thema=}{post}Файл полностью защищен, в том числе и код.{/post}{/quote}А пароль, как я понимаю, Вы не знаете. Так каким же образом Вы собираетесь поменять код?
 
dmention, Вы попробуйте вручную войти в режим редактирования ячейки и не выходя из этого режима запустить ЛЮБОЙ макрос. И теперь непонятно?
Я сам - дурнее всякого примера! ...
 
Юрий М, код я менять не собираюсь. Код будет в другом файле. Мне нужно только автоматизировать клик на ячейке.  
 
KukLP, Ваш намек мне понятен. Фактически мне не нужно входить в режим редактирования. А нужно только кликнуть на ячейке, чтобы сработал запрограммированный на это событие макрос.  
 
К тому же не я придумал функцию Excel.Application.DoubleClick. Почему она не работает в этом вопрос.
 
dmention, Вы тему, ссылку на которую я давал, посмотрели? В чём проблема? На событие даблклик вызываем InputBox, в котором укажем - сколько раз нужно выполнить некую процедуру. Скопируйте оба макроса в модуль листа и выполните ОДИН раз даблклик в ячейке А1:  
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  
   If Not Intersect(Target, Range("A1")) Is Nothing Then  
       x = InputBox("Укажите количество повторов")  
       For i = 1 To x  
           Call Макрос1  
       Next  
   End If  
End Sub  
 
Sub Макрос1()  
   MsgBox "Выполняется Макрос1"  
End Sub  
 
И не нужно ничего имитировать. Так понятно?
 
Юрий М, видимо без файла задача не совсем понятна. Прилагаю файл. На листе "Факт" в столбце М есть функционал "Добавить источник финансирования". Работает по двойному щелчку.  
 
Я свожу данные из отдельных файлов. В них по некоторым организациям много источников финансирования. Нужно, чтобы макрос добавлял под них нужное количество строк.  
<EM><STRONG>Файл удален</STRONG> - велик размер - 1,8М!!! [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
По ссылке не ходили, Правила не читали... Ушёл из темы.
 
Юрий М, по Вашей ссылке ходил еще в первый раз. Поэтому и написал, что видимо Вам задача не совсем понятна.  
 
Оригинал файла сжать менее чем на 1,2 Мб не получается. Выкопировал часть таблицы. Функционал добавления строк не работает, но суть должна быть понятна (описывал в предыдущем сообщении).  
 
В любом случае спасибо за ранее уделенное время!  
 
KukLP, а Вы могли бы кроме иронии предложить что-то еще? Или сдаетесь? ))
 
{quote}{login=dmention}{date=24.09.2012 09:53}{thema=}{post}KukLP, а Вы могли бы кроме иронии предложить что-то еще? Или сдаетесь? )){/post}{/quote}Сергей может и предложил бы, да вот только непонятно, для чего это нужно.  
И вообще это провокация, и на сайте не приветствуется.
 
А нужно это для того, что у меня около 800 файлов из которых нужно занести данные в сводный файл (в нем 818 организаций) при помощи макроса. В каждом из отдельных файлов может быть несколько строк с источниками финансирования. Нужно, чтобы в сводный файл добавлялось такое же количество строк и потом в них копировались данные.
 
Михаил правильно заметил - здесь на "слабо" брать не стоит. И я понимаю автора, поставившего защиту на свой проект. Как раз от "умельцев" из народа. Создайте свой проект и собирайте на здоровье со всех книг данные.    
По Вашему примеру и основываясь на совете Юрия. У Вас там объединения по две строки, значит выделяем по две и запускаем макрос:  
Public Sub www()  
   Dim n&: n = InputBox("Укажите количество строк")  
   n = n * 2  
   Selection.EntireRow.Copy 'если не надо копировать, закомментируйте  
   Selection.Resize(n).EntireRow.Insert xlDown  
End Sub
Я сам - дурнее всякого примера! ...
 
KukLP, Вы просто поймите, что таблица, которую я заполняю это защищенный шаблон (разработанный вышестоящей организацией) и он ни при помощи макроса, ни при помощи "Правка >> Вставить" не дает вставить в себя строки.  
 
Единственный способ добавить строки - двойной щелчок на фразе "Добавить источнк финансирования". Как раз после этого возникает событие, предусмотренное автором шаблона и добавляется строка! (прооисходит то, что вы описали в предложенном варианте макроса).  
 
Мне нужно именно вызвать событие двойного щелчка, чтобы шаблон его подхватил и сам добавил строки!
 
nircmd вам в помощь - консольное приложение, может эмулировать нажатие клавиш, перемещение мыши и много чего другого. Скачиваете, устанавливаете, в макросе  activeCell.select  
shell("nircmdc.exe sendmouse left dblclick")
 
ОГРОМНОЕ СПАСИБО!! Вы меня спасли!!
Страницы: 1
Читают тему
Наверх