Excel - как использовать несколько устройств ввода (USB) - PullRequest
3 голосов
/ 20 апреля 2011

Как мне отличить два USB-устройства ввода, которые оба помещают данные в электронную таблицу?

У меня есть 2 USB-суппорта, которые вводят свои текущие измерения, как если бы они были нажатиями клавиш.Данные отправляются в Excel (или любую другую программу) и располагаются вертикально.В настоящее время Excel обрабатывает оба измерителя так, как если бы они были одним и тем же инструментом.

Мне бы хотелось, чтобы оба измерителя записывали свои данные в отдельные области таблицы Excel.

Примером может служить инструмент 1 и инструмент 2, которые одновременно используются двумя разными людьми, когда оба подключены к одному компьютеру.Инструмент 1 всегда помещает свои данные в следующие области: (A1, B1, C1, A2, B2, C2 ... и т. Д.) Инструмент 2 записывает свои данные в следующие области: (A5, B5, C5, A6,B6, C6 ... и т. Д.) Данные не обязательно должны входить в один и тот же лист, они могут быть в разных листах или что-то простое.

Кто-нибудь может помочь?


обновлено, чтобы включить контент, первоначально предоставленный в виде ответа

Несколько вопросов:

1) Где я могу найтиинформация для "Scripting.FileSystemObject"?Я предполагаю, что эта строка должна быть заменена идентификатором для каждого из отдельных инструментов USB.В диспетчере устройств они указаны как HID-клавиатуры, но я не вижу идентификационный номер.

2) Просто скопируйте и вставьте три вышеуказанных набора кода в VBA под Sheet1 для USB1 и Sheet2 для USB2, или их нужно поместить в отдельные макросы?

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Я предполагаю, что ваши USB-устройства просто регистрируются как Human Interface Devices и отправляют свои выходные данные любому приложению, которое в данный момент находится в фокусе.

Если это так, это не тривиально.Windows объединит все клавиатурные вводы в один входной поток, и обычно нет способа отличить, с какой клавиатуры (или подобного клавиатуре устройства) поступил ввод.позволяет вам перехватывать ввод для каждого устройства: http://www.codeproject.com/KB/system/rawinput.aspx

Теоретически вы должны иметь возможность взаимодействовать с этим API в VBA, но вы должны решить, стоит ли оно усилий.Более простой способ - это использование двух компьютеров.

0 голосов
/ 20 апреля 2011

Один из способов - настроить источники как отдельные объекты, а выходные листы - как объекты. Тогда каждый объект может обрабатываться отдельно или любым другим способом.

EG USB1 должен иметь путь к файлу, отличный от USB2. Также каждая рабочая книга может быть объектом, каждый лист может быть объектом, а диапазон внутри каждого листа может быть объектом

Например, USB1

Dim objFs1 As Object, objF1 As Object, objF1 As Object, objFc1 As Object
Set objFs1 = CreateObject("Scripting.FileSystemObject")
Set objF1 = objFs1.GetFolder(strFilePath)
Set objFc1 = objF1.Files

USB2

Dim objFs2 As Object, objF2 As Object, objF2 As Object, objFc2 As Object
Set objFs2 = CreateObject("Scripting.FileSystemObject")
Set objF2 = objFs2.GetFolder(strFilePath)
Set objFc2 = objF2.Files

Не уверен, как вы хотите загрузить установленные объекты USB, но одна возможность - использовать что-то вроде диалогового окна файла для выбора файла / папки.

With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show

If .SelectedItems.Count = 0 Then
    End
End If

For lngCount = 1 To .SelectedItems.Count
    strEndofPath = InStrRev(.SelectedItems(lngCount), "\")
    strFilePath = Left(.SelectedItems(lngCount), strEndofPath)
    strFilename = Right(.SelectedItems(lngCount), Len(.SelectedItems(lngCount)) - strEndofPath)
Next lngCount
End With

Запись объектов для Excel

Dim objWB1 As Workbook, objSheet1 As Worksheet, rngArea1 as Range
Dim objWB2 As Workbook, objSheet2 As Worksheet, rngArea2 as Range
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...