按键精灵的代码很久不接触了,所以早忘记怎么写了,不过既然是Win系统,那么自带的VBS脚本也可以实现读取表格中的内容,以下就是相关的vbs代码(,最终得到的内容会写入当前目录中带姓名的文本中,内容为一行一条,之后您可以再通过其它方法来读取这个文本去操作实现功能,VBS保存时的编码请务必设为ANSI(脚本文件后缀名为 .vbs)。
' 根据姓名从表格中搜索信息 By 依梦琴瑶
' 自定义表格文件路径
ExcelFilePath = "D:\Desktop\报告单.xls"
' 输入框
Name = InputBox("请注意:" & vbCrLf & vbCrLf & "输入框内容为空时点击确定,会退出脚本。" & vbCrLf & vbCrLf & vbCrLf & "请输入姓名:", "查询")
If Trim(Name) = "" Then
' 如果未输入,或点击取消,将退出脚本
WScript.Quit
End If
Dim objExcel, WorkSheet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Set objWorkbook = objExcel.Workbooks.Open(ExcelFilePath)
Set WorkSheet = objWorkbook.Worksheets(1)
Name = Trim(Name)
' 从B2单元格开始向下搜索,直到找到匹配的内容,然后记录该行的行号
RowNum = 2
Do While WorkSheet.Cells(RowNum, "B").Value <> ""
If WorkSheet.Cells(RowNum, "B").Value = Name Then
searchName = True
Exit Do
End If
RowNum = RowNum + 1
searchName = False
Loop
' 如果未找到,退出脚本
If Not searchName Then
MsgBox "您输入的姓名 " & Name & " 在表格中未搜索到。", 48, "无结果"
WScript.Quit
End If
' 获得最后一列列数
lastColumn = WorkSheet.UsedRange.Columns.Count
' 获取A列对应的标本号
Number = WorkSheet.Range("A" & RowNum).Value
' 获取C列对应的性别
Gender = WorkSheet.Range("C" & RowNum).Value
' 将标本号,姓名和性别赋值到Report变量中
Report = "标本号:" & Number & vbCrLf & "姓名:" & Name & vbCrLf & "性别:" & Gender
' 获取D列到最后一列的内容
For i = 4 To lastColumn
' 获得对应列的列名字母
ColumnLetter = GetColumnLetter(i)
' 获取第一行对应列的内容
TitleName = WorkSheet.Range(ColumnLetter & "1").Value
' 获取姓名所在行对应列的内容
ReportValue = WorkSheet.Range(ColumnLetter & RowNum).Value
' 将上诉所得内容赋值到Report变量中
Report = Report & vbCrLf & TitleName & ":" & ReportValue
Next
' 将内容写入文本文件
Dim objFSO, TextFilePath, objTextFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
TextFilePath = ".\" & Name & "_Report.txt"
Set objTextFile = objFSO.CreateTextFile(TextFilePath, True)
objTextFile.Write Report
objTextFile.Close
MsgBox "报告结果内容已写入“" & Name & "_Report.txt”中", 64, "完成"
' 关闭表格
objWorkbook.Close
objExcel.Quit
' 获得列字母
Function GetColumnLetter(columnNumber)
Dim dividend, modulo, currentColumnNumber
GetColumnLetter = ""
dividend = columnNumber
Do
modulo = (dividend - 1) Mod 26
GetColumnLetter = Chr(65 + modulo) & GetColumnLetter
dividend = (dividend - modulo) \ 26
Loop While dividend > 0
GetColumnLetter = GetColumnLetter
End Function