我有一个文件夹,其中包含每个员工的一个 Excel 工作簿(工作簿中只有一个工作表)。我想打开每个员工工作簿并读取 $A$1 中的单元格,然后写入另一个工作表。最终,我将拥有一个工作表,其中包含每个工作簿的所有 $A$1 单元格。我编写了以下代码,但我指出的行由于某种原因不起作用。你能建议如何做到这一点吗?谢谢
Private Sub CommandButton1_Click()
Const FOLDER As String = "c:\Junk\Employee Files\"
On Error GoTo ErrorHandler
Dim i As Integer
i = 0
Dim fileName As String
fileName = Dir(FOLDER, vbDirectory)
Do While Len(fileName) > 0
If Right$(fileName, 4) = "xlsx" Then
i = i + 1
Dim currentWkbk As Excel.Workbook
Set currentWkbk = Excel.Workbooks.Open(FOLDER & fileName)
Cells(i, 1) = "Employee " & 1
'The line above works perfectly
Cells(i, 2) = currentWkbk.Range("A1").Value
'The line doesn't work. above works perfectly
End If
fileName = Dir
Loop
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
最佳答案
布拉德确实有一点,但我认为您的错误更有可能是由于缺少指定的工作表 - 尝试使用此:
Cells(i, 2) = currentWkbk.worksheets(1).Range("A1").Value
而不是这个
Cells(i, 2) = currentWkbk.Range("A1").Value
但是,您也应该考虑使用 Brads 的建议;)
有些人可能建议使用动态解决方案来选择工作表。我没有使用,因为您明确表示,只有一张工作表。但无论如何,您当然可以使其动态化或使用工作表的实际名称而不是 1
- 无论您的需要如何。
关于excel - 如何从Excel文件中读取单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123400/