我打算在Microsoft SQL数据库中维护USB设备的VID和PID列表。该列表可以从以下网站获得:http://www.linux-usb.org/usb.ids
网站来源的示例格式:
0001 Fry's Electronics
142b Arbiter Systems, Inc.
7778 Counterfeit flash drive [Kingston]
0002 Ingram
0003 Club Mac
0004 Nebraska Furniture Mart
0011 Unknown manufacturer
7788 Flash mass storage drive
0053 Planex
5301 GW-US54ZGL 802.11bg
0079 DragonRise Inc.
0006 PC TWIN SHOCK Gamepad
0011 Gamepad
0105 Trust International B.V.
145f NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211]
0145 Unknown
0112 Card Reader
017c MLK
145f Trust Deskset
0200 TP-Link
0201 MA180 UMTS Modem
0204 Chipsbank Microelectronics Co., Ltd
6025 CBM2080 / CBM2090 Flash drive controller
6026 CBM1180 Flash drive controller
...
在SQL数据库表中找到的值的格式示例:
0001142b Fry's Electronics Arbiter Systems, Inc.
00017778 Fry's Electronics Counterfeit flash drive [Kingston]
0002 Ingram
0003 Club Mac
0004 Nebraska Furniture Mart
00117788 Unknown manufacturer Flash mass storage drive
00535301 Planex GW-US54ZGL 802.11bg
...
所以我想把它加载到DB中的方法是使用excel VBA / Macro进行处理,我将第二列中的前四个字符(PID)连接到前四个字符(VID) )在第一栏。
我可以从Excel专家和专家那里获得帮助,我怎样才能以最简单的方式实现这一点,使用VBA或宏?
非常感谢任何帮助和建议!谢谢!
答案 0 :(得分:1)
实际上这很简单。我所做的是复制上面链接中的数据并将其粘贴到记事本中,如下所示。我只是为了演示目的而采用了27条奇数行。
<强>逻辑:强>
MyData
)!MyData
并检查第一个字符是否为空。 (实际上是Horz Tab)。因此,我们无法使用Len(Trim())
Horz Tab
作为第一个字符的记录,这就变成了SUFFIX。只需加入它们并将它们存储在输出数组中,Say MyFinalData
<强>代码:强>
Option Explicit
Sub Sample()
Dim MyData As String, strData() As String
Dim MyFinalData() As String, sPrefix As String
Dim i As Long, j As Long, n As Long
'~~> Open text file and read into the array in one go
Open "C:\sample.Txt" For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
'~~> Close Text File
Close #1
strData() = Split(MyData, vbCrLf)
ReDim Preserve MyFinalData(UBound(strData) + 1)
For i = 0 To UBound(strData)
If Asc(Left(strData(i), 1)) <> 9 Then _
sPrefix = Split(strData(i), " ")(0)
If Not i = UBound(strData) Then
If Asc(Left(strData(i + 1), 1)) = 9 Then
For j = i + 1 To UBound(strData)
If Asc(Left(strData(j), 1)) <> 9 Then
i = j - 1
Exit For
End If
MyFinalData(n) = sPrefix & _
Trim(Replace(strData(j), vbTab, ""))
n = n + 1
Next j
Else
MyFinalData(n) = strData(i)
n = n + 1
End If
End If
sPrefix = ""
Next i
'~~> Showing output here. You can directly write this data to an
'~~> excel sheet if you want.
For i = LBound(MyFinalData) To UBound(MyFinalData)
Debug.Print MyFinalData(i)
Next i
End Sub
<强>输出:强>
答案 1 :(得分:0)
如果您不介意临时搭建,可以尝试以下方法:
现在,如果你全部选择它们并将单元格向下拖动到列表的末尾,在列F中你将得到清洁代码的列表:没有'儿子'和儿子的父亲:复制,粘贴特殊于别的地方并排序以删除空单元格。
无法发布图片以显示结果:至少需要10点声望(!!!!)
侨!