Добавление листа или данных из одной рабочей книги в другую с помощью переменной - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть этот проект, основной целью которого является изменение и использование листа Excel. Все сделано через пользовательскую форму для удобства пользователей. Импортируемый лист будет находиться в рабочей книге, отправленной из внешнего источника, различными способами (почтой, полученной из сети ...) и каждый раз будет иметь другое имя. Я ищу самый удобный для пользователя способ получения данных из этого листа.

Самый удобный для меня способ, как я могу понять, это временно скрыть пользовательские формы и попросить пользователя открыть рабочую книгу, из которой данные необходимы. Затем, чтобы код скопировал лист, который мне нужен, среди моих основных листов проекта (если он проходит серию тестов, чтобы убедиться, что это правильный, а не какой-то другой случайно открытый учебник).

Я искал для более интуитивного решения, такого как перетаскивание книги на пользовательскую форму моего проекта. Я не уверен, что это можно сделать, я читал о необходимости древовидного представления, которое, согласно некоторым источникам, не поддерживает 64, а по мнению других работает нормально. Я также читал о замене JPK для дерева просмотра, но я не уверен, как эту замену можно рассматривать как безопасный вариант в долгосрочной перспективе.

Есть какие-нибудь подсказки? Я ищу решение, не зная, что искать.

1 Ответ

1 голос
/ 21 февраля 2020

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

  1. Добавить ссылку на Microsoft Windows Common Controls 6.0 ... Это можно сделать из IDE -> Инструменты -> Ссылки ...

  2. Поместите элемент управления TreeView в форму. Обычно ваш ToolBox не показывает его. Таким образом, после щелчка правой кнопкой мыши на ToolBox, необходимо выбрать опцию Additional Controls. Затем нужно только проверить Microsoft TreeView Control, version... и нажать ОК.

  3. Перетащите новый элемент управления на форму и нажмите F4. В появившемся окне свойств вы должны установить «OLEDropMode» как OLEDropManual. Нажмите Enter, выберите форму и нажмите Save.

  4. Создайте переменную на уровне модуля формы (поверх нее, в области ее объявлений). Не обязательно объявлять это там, но было бы хорошо иметь его там для будущего использования, если это необходимо. Случилось так, что мне там было нужно ...

    Private strExcelWPath As String

  5. Дважды щелкните элемент управления TreeView (по умолчанию - TreeView1) и откройте, таким образом, его код событий. Нажмите правую верхнюю маленькую стрелку вниз и выберите OLEDragDrop событие. Будет создан следующий код события:

    Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)

    End Sub

    Вы должны вставить следующие строки кода (или аналогичные), и это будет выглядеть так:

    Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single) strExcelWPath = Data.Files(1)<br> Debug.Print strExcelWPath 'just checking of what it returns droppedWorkbookProcess strExcelWPath 'calling the sub able to process the workbook End Sub

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

    Sub droppedWorkbookProcess(strFullName As String) 'Here you place the processing code, using of passed strFullName parameter End Sub

  7. Код может быть адаптирован для множественного выбора, а также, если необходимо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...