Скрипт / Макрос в Excel, нажав на ячейку


2

Есть кое-что, что я хочу сделать в Excel 2010. В частности, я хочу, чтобы открытый лист загружал данные из текстового файла, щелкнув -important- в ячейке текущего открытого рабочего листа.

Итак, мои конкретные потребности:

  1. Если это возможно, запустить макрос / скрипт, нажав на ячейку.

О скрипте / макросе:

  1. Какой был бы предпочтительный, по вашему мнению, способ реализации.

  2. И, более конкретно, как автоматически импортировать необходимые данные, только щелкая, без необходимости постоянно указывать желаемый файл .txt каждый раз, только 1 раз в максимуме, при запуске или с помощью пользовательского файла «инициализации / конфигурации».


Просто для ясности; почему вы не можете использовать объект кнопки?
CLockeWork

Будучи практически полным новичком в Excel и Visual Basic, было бы приятно увидеть, как вы выражаете свои мысли в правильном ответе :)
Noob Doob

Двойной щелчок будет в порядке ??
Студент Гари

Был бы признателен один щелчок, но если он не оказывает такого большого влияния на ядро ​​решения, вы можете продолжить идею и дать мне посмотреть, что полезно.
Нуб Дуб

Я читаю 24-часовое руководство по Visual Basic, но чем быстрее я получу решение, тем лучше. Заранее спасибо за любой интерес!
Нуб Дуб

Ответы:


2

Вот очень конкретный пример, который вы можете адаптировать к вашим потребностям. Это макрос события рабочего листа, который запускается двойным щелчком по ячейке B9 :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("B9")) Is Nothing Then Exit Sub
Cancel = True
Dim TextLine As String
    Close #1
    Open "C:\TestFolder\test.txt" For Input As #1
    i = 1
    j = 0
    Do While Not EOF(1)
        Line Input #1, TextLine
            j = j + 1
            Cells(i, j) = TextLine
        Loop
    Close #1
End Sub

Изменения, которые вы должны будете сделать:

  1. ячейка для двойного щелчка B9
  2. спецификация открываемого текстового файла
  3. место назначения для импортированных данных

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код листа), см .:

http://www.mvps.org/dmcritchie/excel/event.htm

Макросы должны быть включены, чтобы это работало!


Это кажется полезным. Не могли бы вы указать путь, с помощью которого можно легко создавать созданные макросы для новых файлов Excel и способ «автоматического» расширения кода для включения пользовательских ячеек? (Я не возражаю, если мне потребуется создать отдельное приложение для достижения этих целей). Если вы не возражаете, я также могу отправить вам сообщение в личку и опубликовать результаты общей попытки в качестве нового вопроса с самостоятельным ответом. Или, если вы думаете, что я должен задать отдельный вопрос для каждого раздела, скажите это. Спасибо за старания.
Нуб Дуб

Вы можете импортировать / экспортировать фрагменты кода VBA непосредственно из меню VBE.
Студент Гари

То, что вы сказали, было весьма полезно. То, что я сейчас скажу, может запутаться. Может ли добавление кода VBA стать сам макрос? Я имею в виду, что я мог бы запустить «главный макрос», который бы учитывал некоторые аргументы, а затем добавлял столько, и в правильной форме, кусков приведенного выше кода по мере необходимости, в соответствующее количество кнопок. Если ответ да, то все, что мне нужно, это немного поэкспериментировать.
Нуб Дуб

То, что вы предлагаете, интересно. Я никогда не пробовал сам .................. но тема освещена здесь: cpearson.com/excel/vbe.aspx
Студент Гари

Вопрос: Ваше решение добавляет целую строку в каждую ячейку. Есть ли какая-нибудь функция, которая добавляет отдельные слова в отдельные ячейки, слова разделяются пробелом?
Нуб Дуб

0

Если нет веской причины для того, чтобы щелчок ячейки был активацией, то самым простым способом было бы создать объект кнопки.


Перейдите на вкладку «Разработчик» и выберите «Вставить», затем выберите кнопку из элементов управления Active X ActiveXControls


Затем нажмите и перетащите форму вашей кнопки, затем щелкните правой кнопкой мыши и выберите Proerties.

Отсюда вы можете изменить такие вещи, как текст, отображаемый на кнопке, и цвет кнопки. Если вы выберете «Управление форматами» при щелчке правой кнопкой мыши и перейдете к «Свойствам», вы можете установить флажок, чтобы он не перемещался и изменял размеры при изменении ячеек / строк / столбцов.

Далее щелкните правой кнопкой мыши и выберите «Просмотреть код».
Посмотреть код


Это приведет вас к окну кода, где вы можете вставить свой VBA. Вы Оттуда введите остальную часть кода Гэри из Dim TextLine вниз.

Наконец, вернитесь на вкладку «Разработчик» и отмените режим проектирования.
Режим дизайна


Теперь вы можете проверить кнопку. Если вам нужно внести в него какие-либо изменения или переместить его, просто выберите «Режим разработки».


Спасибо за ваш ответ. Но для моего случая, в частности, мне нужно, чтобы это было активировано щелчком ячейки. Кроме того, мне нужно создать «приложение», в котором необходимое количество кнопок будет неизвестно, возможно, решено при открытии файла, и мне нужно, чтобы оно было «переносимым», а не специфичным для файла. Я полагаю, что «клеточный» подход будет легче выполнить.
Нуб Дуб

Не беспокойтесь, это, конечно, было то, почему я спрашивал больше информации в первую очередь :)
CLockeWork
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.