【问题标题】:Is there a way to export the same specific cells from multiple excel workbooks, into one excel sheet?有没有办法将多个 Excel 工作簿中的相同特定单元格导出到一个 Excel 工作表中?
【发布时间】:2019-11-21 15:57:42
【问题描述】:

我正在制作 Excel 表格退款申请表。我设法制作了一个按钮,可以打印 2 个副本并将其保存为填写好的表格。但我希望能够将表单摘要(4 个特定单元格 - 日期、名称、项目名称、项目 ID 代码)上传到 Google 电子表格。为方便起见,我想制作一个主工作簿,从中复制并粘贴当天填写的所有表格的摘要。

我尝试过通过 API 研究 excel-google 表格集成,但我不是程序员,这个话题让我不知所措。

我也发现了这个话题:Importing Data from specific excel sheets from multiple workbooks in a folder

但是那里的代码会复制整个列,而我只需要 4 个特定的单元格。

 Private Sub CommandButton1_Click()

    response = MsgBox("Jesteś pewien?", vbYesNo)

    If response = vbNo Then
        MsgBox ("Macro Ending")
        Exit Sub
    End If

    Dim path As String
    Dim filename1 As String

    path = "D:\filled forms\"

    filename1 = Format(Now, "dd-mm-yyyy") & " " & Range("C9") & " " & Range("G6")
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=path & filename1 & ".xlsm",
    FileFormat:=xlOpenXMLWorkbookMacroEnabled
    ActiveSheet.PrintOut Copies:=2, Collate:=False

    With ThisWorkbook.Worksheets("sheet1")
        .Range("E29").Copy
        With Workbooks("mastersheet.xlsx").Worksheets("Arkusz1")
            Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        End With
    End With

End Sub

不幸的是,这段代码没有复制单元格的内容,我最终得到了空工作簿。

编辑:我设法找到了解决方案,这就是它的外观

Private Sub CommandButton1_Click()

response = MsgBox("Jesteś pewien?", vbYesNo)

If response = vbNo Then
    MsgBox ("Akcja anulowana.")
    Exit Sub
End If

Dim path As String
Dim filename1 As String

path = "D:\"

filename1 = Format(Now, "dd-mm-yyyy") & " " & Range("C9") & " " & Range("G6")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=path & filename1 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveSheet.PrintOut Copies:=2, Collate:=False
Worksheets("Sheet1").Range("C34:F34").Copy
Workbooks("analiza.xlsx").Worksheets("arkusz1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues


End Sub

【问题讨论】:

  • 您需要在最后一次使用 Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesRows 之前添加一个 .。因为您使用的是With 语句,所以您希望将Cells 粘贴到Arkusz1 工作表上。 (这与上面的.Range 语句相同,与sheet1 关联)。

标签: excel vba


【解决方案1】:

你可以只复制你喜欢的单元格:

Dim fromData As Range
Set fromData = ThisWorkbook.Worksheets("sheet1").Range("E29:E31")

Dim toData As Range
Dim lastRow As Long
With Workbooks("mastersheet.xlsx").Worksheets("Arkusz1")
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set toData = .Range(.Cells(lastRow + 1, 1), .Cells(lastRow + 3), 1))
End With
toData.Value = fromData.Value

【讨论】:

  • 不幸的是,出现了一个新问题。该代码仅在单元格 A1:A4 中粘贴“#######”(鼠标悬停显示复制的日期),而不是将单元格 E29:H29 中的内容复制到单元格 A1:D1。我可以请你帮忙吗?
  • 这通常意味着列宽太窄而无法显示完整值。尝试使列更宽。
猜你喜欢
  • 2016-10-15
  • 2021-03-16
  • 1970-01-01
  • 2020-12-28
  • 2013-10-23
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多