|
求助
能否使用以下VBA(Public nm$)完成附件中的内容 在总表中的A3输入S18050238 M3 N3中输出T1文件夹中的S18050238文件中的M2 G3 在O3 P3中输出T2文件夹中的S18050238文件中M2 G3 在总表中的A3输入S18050239 M3 N3中输出T1文件夹中的S18050239文件中的M2 G3 在O3 P3中输出T2文件夹中的S18050239文件中M2 G3
sheet1
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address <> "$A$3" Then Exit Sub
nm = Target.Value
Call GetData
End Sub
模块1
Public nm$
Sub GetData()
Dim sFullName, sFile, sPath, sSheet, sCell As String
Dim sResult As String
sFile = nm & ".xls" '文件名称赋值
sPath = "C:\Users\Administrator\Desktop\模具检验台账\样件检验报告\T1\" '文件路径赋值"
sFullName = Dir(sPath & sFile)
If sFullName = "" Then Exit Sub '如果放弃选择文件,退出程序
sSheet = "sheet1" '指定工作表,即在数据源文件中要读取数据的Sheet的名称"
On Error Resume Next
For r = 2 To 2
For c = 13 To 14
If c = 2 Then GoTo 100
sCell = Cells(r, c).Address '定义需要读取的区域,本例为B4:f45
sResult = GetCellValue(sPath, sFile, sSheet, sCell)
If Err.Number <> 0 Then '找不到指定工作表(比如选错了文件)时进行提示
MsgBox "工作表 " & sSheet & " 不存在。请确保您选择了正确的文件,且源文件中工作表名称没有被修改。 ", vbCritical
Err.Clear
Exit Sub
End If
Cells(3, c) = sResult '把读取的数据写入当前文件的B4:f45区域,便于后续查询使用
100:
Next
Next
MsgBox "Done!", vbInformation
End Sub
'调用XLM4.0宏表函数读取指定区域的内容
'如果指定工作表不存在,返回错误
Public Function GetCellValue(sPath, sFile, sSheet, sCell)
GetCellValue = ExecuteExcel4Macro("'" & sPath & "[" & sFile & "]" _
& sSheet & "'!" & Range(sCell).Address(, , xlR1C1))
End Function
|
|