
Michael Cain
1
1982
439
Как раз тогда, когда я подумал, что я закончил с моей последней партией советов и приемов VBA Как отправлять электронные письма из электронной таблицы Excel с использованием сценариев VBA Как отправлять электронные письма из электронной таблицы Excel с использованием сценариев VBA Наш шаблон кода поможет вам настроить автоматические электронные письма от в Excel с использованием объектов данных совместной работы (CDO) и сценариев VBA. Я обнаружил еще одну по-настоящему классную технику, которую каждый может использовать для простой передачи информации между двумя приложениями, использующими VBA в качестве внутреннего языка сценариев..
Отличительной особенностью VBA является то, что он предоставляет вам так много функций и инструментов. 3 способа открытия приложений и Windows, развернутых с помощью VB Script [Windows] 3 способа открытия приложений и Windows, развернутых с помощью VB Script [Windows]. вещь, которую я люблю делать, это писать сценарии VB. Будь то файл сценария Windows или сценарий VBA внутри приложения, сценарии предоставляют возможность добавить функциональность в приложения… которые обычно являются частью приложений VB, хотя и в несколько урезанной версии..
Одна из самых неприятных частей работы с VBA в конкретных приложениях заключается в том, что не всегда легко получить два приложения для “говорить” друг другу. Это потому, что все переменные, которые вы используете, доступны только в рамках самого приложения, а не из любого места на компьютере.
С этим сказал, там являются способы передачи информации Как интегрировать данные Excel в документ Word Как интегрировать данные Excel в документ Word Возможно, во время вашей рабочей недели вы часто копируете и вставляете информацию из Excel в Word или иным способом вокруг. Именно так люди часто создают письменные отчеты ... между приложениями на основе VBA, такими как Word или Excel. Во многих случаях, даже в профессиональной среде, программисты прибегают к обмену данными между приложениями с помощью файлов данных. Это может сработать, но оно вводит элемент потенциального вмешательства или ошибки - например, удаление или изменение этих файлов - чтобы испортить работу.
Еще один подход, который вы можете использовать для очень быстрой передачи информации между приложениями, - это передача данных в буфер обмена, а затем чтение этой информации из другого приложения..
Передача информации с помощью буфера обмена
В этом примере я покажу вам, как передать три фрагмента текстовой информации - значения внутри 3 текстовых полей - непосредственно в электронную таблицу Excel, которую запускает макрос Word.
Начальная настройка показана ниже. Это документ Word, в котором я переключился в режим разработки и создал 3 метки и 3 текстовых поля, чтобы пользователь мог вводить информацию. Нажав на “Отправить” кнопка запускает код передачи данных.
Дважды щелкните по новой кнопке, которую вы создали в режиме разработки, чтобы попасть в экран VB Editor. Первое, что вам нужно сделать, это добавить ссылку, которая дает вам доступ к системному буферу обмена. Нажмите на Инструменты - Ссылки.
Прокрутите список литературы и выберите “Библиотека объектов Microsoft Forms 2.0”. После того, как вы нажмете Okay, ваш сеанс редактирования VB теперь будет иметь доступ к методам, которые позволяют вам читать или писать из буфера обмена.
Это именно то, что мы собираемся сделать сейчас. В функции для “Отправить” кнопку, я ввел следующий код.
Dim strClipText As DataObject Dim strInputText As String Dim errCode В качестве целочисленного значения strClipText = Новый DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value.textTextTTTTTTTTTT PutInClipboard 'Установить objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Program Files (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile" .xlsm ")
Смотри как это легко? Объект данных strClipText - это объект буфера обмена, которым вы можете манипулировать. Во-первых, прочитайте все значения полей в одну строковую переменную, каждое поле данных должно быть разделено запятой, или все, что вам подходит.
Затем вам нужно будет создать файл Excel, который вы открываете в команде Shell выше. В Excel вы хотите добавить ту же ссылку на “Библиотека объектов Microsoft Forms 2.0”, а затем в функции Workbook.Open () вы можете запустить следующий скрипт.
Dim msObj в виде MSForms.DataObject Dim strText в виде строки Dim strResult () в виде строки Dim intArrayCount в качестве целого числа Dim x в качестве целочисленного значения msObj = новый MSForms.DataObject msObj.GetFromClipboard strText = msObj.RetText (stt) (sttt) ) intArrayCount = Application.CountA (strResult) Для x = 0 Для intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Ячейки (x + 1, 2) .Value = strResult (x) Далее
Опять же, когда вы проходите через это, это простой и очень быстрый скрипт. Он создает объект MSForms, получает самые последние данные из буфера обмена и помещает их в строковую переменную. Затем он разбивает эту единственную длинную строковую переменную по любому разделителю, который вы использовали, на массив отдельных строк, и, наконец, проходит по массиву (CountA дает вам длину массива) и выводит каждое значение на лист в столбце 2..
Вот окончательные результаты.
Теперь, проявив немного творческого подхода, вы можете использовать эту технику для запуска любого приложения на основе VBA и “вставить” информация в него.
Вы всегда можете сделать то же самое, используя справочную библиотеку Excel, но в этом случае вы будете молча открывать файл Excel и манипулировать данными внутри этого файла. В приведенном выше случае вы буквально открываете приложение Excel и отображаете файл, а оставшаяся часть работы позволяет запускать макрос в Excel..
Это наиболее полезно, когда есть другие приложения, такие как многие приложения интерфейса оператора на многих производственных объектах, которые основаны на VBA, но могут не иметь этих библиотек, доступных для тесной связи двух приложений. Использование буфера обмена в автоматическом режиме, как это быстро, легко и выполняет свою работу.
Попробуйте приведенные выше сценарии и дайте нам знать, как они работают в вашей системе. Вы должны были настроить это? Есть ли у вас какие-либо предложения о том, как сделать код еще лучше? Поделитесь своими мыслями в разделе комментариев ниже.
Кредит изображения: Изображение Передачи Файла через Shutterstock