Excel 复制单元格值时如何指定单元格?
我正在尝试打开文件夹中的一些工作簿,以便将一些数据拉入ThisWorkbook。我对单元格符号有问题Excel 复制单元格值时如何指定单元格?,excel,vba,Excel,Vba,我正在尝试打开文件夹中的一些工作簿,以便将一些数据拉入ThisWorkbook。我对单元格符号有问题 Option Explicit Sub UpdateAttendance() GetData End Sub Private Sub GetData() Dim wb As Workbook, ws As Worksheet Dim fso As Object Dim folder As Object Dim wbFile As Object
Option Explicit
Sub UpdateAttendance()
GetData
End Sub
Private Sub GetData()
Dim wb As Workbook, ws As Worksheet
Dim fso As Object
Dim folder As Object
Dim wbFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Users\8865\Documents\excel\relationships\registers\regs")
Dim y As Long
y = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each wbFile In folder.Files
If fso.GetExtensionName(wbFile.Name) = "xlsx" Then
Set wb = Workbooks.Open(wbFile.Path)
For Each ws In wb.Sheets
'ThisWorkbook.Sheets(1).Range(Cells(1, 1)).Value = ws.Range("E19").Value --> Doesn't Work
'ThisWorkbook.Sheets(1).Range(Cells(1, 2)).Value = ws.Range("E35").Value --> Doesn't work
ThisWorkbook.Sheets(1).Range("A1").Value = ws.Range("E35").Value ' --> Works fine but I need to loop it to change the row so I have to use Cells
ThisWorkbook.Sheets(1).Range("B1").Value = ws.Range("E19").Value ' --> works fine but I need to loop it to change the row so I have to use Cells
'ThisWorkbook.Sheets(1).Range(Cells(1, 1), Cells(1, 3)).Value = ws.Range("E19, E35, E40").Value --> Is it possible to do something like that?
y = y + 1
Next ws
wb.Close
End If
Next wbFile
End Sub
如上所述,我在行的末尾添加了一些注释,以说明哪些有效,哪些无效
编辑:为了澄清,我会做以下关于迭代的事情,但它会抛出一个错误 运行时错误1004,应用程序定义或对象定义错误)
在第二个编码示例中,替换:
ThisWorkbook.Sheets(1).Range(Cells(y, 1)).Value = ws.Range("E19").Value
与:
您不需要在范围内的单元格()
(
循环,不需要增加
使用y=thiswoolk.Sheets(1).Cells(Rows.Count,1).End(xlUp).Row
计算最后一行数据,因此只要满足条件,就必须将其增加1,并将其用作Cells属性.Cells(y,“a”)
(或范围属性.Range(“a”&y)
)中的行参数
你正确地增加了y,但你没有在循环中使用它,你一直在
这个工作簿中覆盖A1和B1。我知道这一点。这是因为我的前两行单元格(x,y)表示法(注释掉)抛出了错误,所以我无法对其进行迭代。谢谢
ThisWorkbook.Sheets(1).Range(Cells(y, 1)).Value = ws.Range("E19").Value
ThisWorkbook.Sheets(1).Cells(y, 1).Value = ws.Range("E19").Value
Private Sub GetData()
Dim wb As Workbook, ws As Worksheet
Dim fso As Object
Dim folder As Object
Dim wbFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Users\8865\Documents\excel\relationships\registers\regs")
Dim y As Long
y = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For Each wbFile In folder.Files
If fso.GetExtensionName(wbFile.Name) = "xlsx" Then
Set wb = Workbooks.Open(wbFile.Path)
For Each ws In wb.Sheets
y = y + 1
ThisWorkbook.Sheets(1).Cells(y, "A").Value = ws.Range("E35").Value
ThisWorkbook.Sheets(1).Cells(y, "B").Value = ws.Range("E19").Value
Next ws
wb.Close
End If
Next wbFile
End Sub