我使用文件查找器代码搜索我的数据库以查找所需的文件。当我搜索我的数据库时,将有多个文件具有相同的部件号但规格不同。在我的下面的代码中;
工作总结:
我有一个* .txt文件,我的产品的部件号如螺栓,螺丝, 坚果,春天。我很久以前就组织了一个数据库并创建了一个 每个人的数据库。通常我有多个文件 相同的部件号(因为其他规格可能不同)。一世 有一个功能来查找零件,如果我debug.print他们我可以看到 成立的部分。
我需要StackoverFlow的VBA专家的指导/帮助
我有这样的txt文件:
screw: AL9206689
bolt: OP86596
spring: GHJ22341
它的唯一一小部分会有很多部分,最多10或15个。
如果我手动将数据库路径和部件号写入sub,它会正确地给出结果。但我想自动转换这个过程。我怎么能这样做?
我还将创建一个按钮,其标题将被创建为部件号。例如
- 螺丝..................找到3个文件(Activex命令按钮标题)
- Nuts ...................发现1个文件(Activex命令按钮标题)
- Spring .................找到5个文件(ActiveX命令按钮标题)
如何为每个用户打开用户表单,以及如何在该用户表单中列出已创建的文件。
因为当我用我的sub / func变量搜索时,存储了螺丝创建的文件数据。但是现在我的变量将继续存储,我的变量将存储Nuts创建的文件数据。我不知道如何处理这个问题。
程序输入:
db_Directory:是文件的数据库(例如bolt_db,nut_db,spring_db)
PartFile:是部件号或部件代码(例如NO5551122)
扩展名是所需的文件扩展名(例如.txt,.xlsx)
按钮:是标题中的activex命令按钮我将写入已创建的文件编号。当我点击我想初始化一个 用户表格 使用acivex列表框选择后,列表框中列出了哪些项目 文件,然后我将单击选择按钮,然后它写入此文件 文件的完整路径。
我的功能:
Sub FindFiles(db_Directory, PartFile, extension, button)
Dim iFilesNum As Integer
Dim iCount As Integer
Dim sMyFiles() As String
Dim blFilesFound As Boolean
Dim PartFile As String
Dim db_Directory As String
Dim extension As String
Dim button As MSForms.CommandButton
blFilesFound = PartFinder.FindFiles(db_Directory, _
sMyFiles, iFilesNum, "*" & PartFile & extension, True)
If blFilesFound Then
button.Caption = iFilesNum & " files found"
For iCount = 1 To iFilesNum
Debug.Print sMyFiles(2, iCount)
Next
Else
Debug.Print "Nothing Found"
End If
End Sub
答案 0 :(得分:1)
快速启动问题:为什么要在第一行之外定义参数类型?
Sub FindFiles(db_Directory As String, PartFile As String, extension AS String, button As MSForms.CommandButton)
关于问题。您可以使用.TopLeftCell
属性来确定按钮所在的行。您可以使用它来计算行上的部分:
MsgBox button.TopLeftCell.Row 'What row in the worksheet is the button on?
因此,如果部件位于单元格A2
中,则部件号位于单元格B2
中,文件扩展名位于单元格C2
中,按钮位于单元格{{ {1}}:
D1
如果你知道所有Sub FindFiles(db_Directory AS String, button as MSForms.CommandButton)
Dim PartFile AS String, extension AS String
PartFile = button.TopLeftCell.EntireRow.Cells(1, 2).Value 'Cell in column B on the same Row as the button
extension = button.TopLeftCell.EntireRow.Cells(1, 3).Value 'Cell in column C on the same Row as the button
'Put your other code after this
'Put your other code before this
End Sub
选项是什么,你可以使用Switch语句来扩展它:
db_Directory