Excel 复制单元格值时如何指定单元格?

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

我正在尝试打开文件夹中的一些工作簿,以便将一些数据拉入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
    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