0

CollectTimesheetData.xlsm 在 A1、B1 和 C1 单元格中具有以下标题:

员工姓名 项目名称 总计费时间

我创建了一个运行按钮,其中包含以下宏。我想做的是:

  1. 要求用户选择一个文件夹
  2. 逐一运行该文件夹中的所有 .xls 文件
  3. 从所选文件夹内的所有 xls 文件中读取单元格值 B7、B14 和 R28
  4. 对于第一个 xls 文件,在 A2 中写入 B7,在 B2 中写入 B14,在 C2 中写入 R28,
  5. 对于第二个 xls 文件,在 A3 中写入 B7,在 B3 中写入 B14,在 C3 中写入 R28,
  6. 在 A4 中写入 B7,在 B4 中写入 B14,在 C4 中写入第三个 xls 文件的 R28,依此类推。

我所拥有的是以下宏:

Sub Button1_Click()

Dim fd As Object, myfiles As String, result, tempfile As Workbook, j As Long, i As Long

Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show <> -1 Then Exit Sub

ChDir (fd.SelectedItems(1))

myfiles = Dir(fd.SelectedItems(1) & Application.PathSeparator & "*.xls")

ReDim result(1 To Rows.Count, 1 To 1)

Application.ScreenUpdating = 0
j = 2

Do While myfiles <> ""

    Set tempfile = Workbooks.Open(myfiles)
    ActiveSheet.Cells(j, 1).Value = tempfile.Sheets(1).Range("B7")
    ActiveSheet.Cells(j, 2).Value = tempfile.Sheets(1).Range("B14")
    ActiveSheet.Cells(j, 3).Value = tempfile.Sheets(1).Range("R28")

    j = j + 1
    tempfile.Close 0
    myfiles = Dir

Loop

Application.DisplayAlerts = 1
Application.ScreenUpdating = 1

End Sub

问题是它运行,没有错误,没有例外,但当前活动工作表中也没有写入任何内容。

请问我在这里缺少什么?

4

1 回答 1

2

你意识到曾经

Set tempfile = Workbooks.Open(myfiles)

执行,ActiveSheet 成为新打开的工作簿中的某个工作表?该代码仅将值从 tempfile 中的第一个工作表传输到同一文件中的某个任意工作表。

于 2013-10-28T11:45:36.243 回答