【问题标题】:Excel vba macro to copy cells and paste in anotherExcel vba宏复制单元格并粘贴到另一个
【发布时间】:2016-05-20 20:49:29
【问题描述】:

我先道歉...

我是一个狂热的 Excel 用户,但不擅长 VBA。任何帮助表示赞赏。

  1. 我需要用户以 ddmmyyyy 格式输入日期。
  2. 根据该 ddmmyyyy 信息打开工作簿(将其与文件名连接)。
  3. 从该工作簿中的特定范围复制单元格 (AN1:AS1)。
  4. 将复制的单元格粘贴到另一个工作簿中。它应该粘贴在用户输入的日期旁边。

这是我目前尝试的代码:

dim input as string
input = inputbox("Insert date in format ddmmyyyy")
Workbooks.open (""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"")
Workbooks("(""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"")).Worksheets("Sheet1").Range("AN1:AS1").Copy _
    Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A1")

有人可以帮我完成这项工作吗?谢谢。

【问题讨论】:

  • 对于您的输入,请尝试input = Text(inputbox("Insert date in format ddmmyyyy"),"ddmmyyyy") 强制格式化。

标签: vba excel


【解决方案1】:

将此代码复制到启用宏的工作表的 VBA 窗口中,然后按 F5 执行或将其作为宏分配给按钮或其他控件对象:

  Public Sub CopyCells()
      Dim wkb         As Excel.Workbook
      Dim wks         As Excel.Worksheet
      Dim wkb2        As Excel.Workbook
      Dim wks2        As Excel.Worksheet
      Dim strMSG      As String

      strMSG = InputBox("Insert date in format ddmmyyyy")

      Set wkb = Excel.Workbooks.Open("\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & strMSG & "1155.csv")

      Set wkb2 = Excel.Workbooks.Open("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls")

      Set wks = wkb.Worksheets("Sheet1"): wks.Activate

      wks.Range("AN1:AS1").Copy

      Set wks2 = wkb2.Worksheets("Sheet1")

      wks2.Range("A1").PasteSpecial xlPasteAll

      Set wks = Nothing: Set wkb = Nothing

      set wks2 = nothing: set wkb2 = nothing
  End Sub

【讨论】:

  • 这会到达读取 set wks2 = wkb2.worksheets("sheet1"): wks.activate 的行。 “sheet1”是选项卡的名称吗?如果是,则称为“ACD 数据”。我把它放在那里并得到一个错误,说明运行时错误'91'。对象变量或带块变量注释集。请指教。
  • 是的,“表 1”是一个假设,是默认工作表的名称。您需要将工作表的名称替换为数据将 转到 的工作表的名称,并确保该值在引号中。
【解决方案2】:

你可以把最后一行改成Range("A2")

Workbooks(""\\vmp-avayaacc\reports\servicedesk\Josh\Agent By Skillset Performance" & input & "1155.csv"").Worksheets("Sheet1").Range("AN1:AS1").Copy _
Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A2")

然后将前面的日期添加到单元格A1:

Workbooks("http://sharepoint.coh.org/SiteDirectory/ITS/BO/Dashboard.xls").Worksheets("Sheet1").Range("A1").Value=input

希望这会有所帮助。

【讨论】: