Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从一个excel工作簿复制到另一个工作簿_Excel_Vba - Fatal编程技术网

将数据从一个excel工作簿复制到另一个工作簿

将数据从一个excel工作簿复制到另一个工作簿,excel,vba,Excel,Vba,我正在尝试编写一个代码,该代码使用一个按钮单击从输入工作簿中获取数据,然后将其粘贴到输出工作簿中。我搞不清楚的问题是,我的输入工作簿的名称按日期更改,但它们都使用相同的命名约定。我希望代码能够提取最新的日期输入文件,然后将其粘贴到输出工作簿中。我不知道从哪里开始。。任何帮助都将不胜感激 谢谢我同意肯的看法:你一个问题问得太多了。“从我的输入工作簿中获取数据,然后将其粘贴到我的输出工作簿中”可能意味着什么。然而,这是我用来解决您需求的第一部分的函数。参数是文件夹名称和文件模板。它返回文件夹中与模板

我正在尝试编写一个代码,该代码使用一个按钮单击从输入工作簿中获取数据,然后将其粘贴到输出工作簿中。我搞不清楚的问题是,我的输入工作簿的名称按日期更改,但它们都使用相同的命名约定。我希望代码能够提取最新的日期输入文件,然后将其粘贴到输出工作簿中。我不知道从哪里开始。。任何帮助都将不胜感激


谢谢

我同意肯的看法:你一个问题问得太多了。“从我的输入工作簿中获取数据,然后将其粘贴到我的输出工作簿中”可能意味着什么。然而,这是我用来解决您需求的第一部分的函数。参数是文件夹名称和文件模板。它返回文件夹中与模板匹配的最新文件的名称

Function NewestFileName(ByVal Path As String, ByVal FileTemplate As String) As String

  ' * Finds, and returns the name of, the newest file in folder Path with a name
  '   that matches FileTemplate.  Returns "" if no matching file is found.

  ' * Path          Folder in which to search for files
  ' * FileTemplate  File name specification of the file required.  For example:
  '                     MyFile*.xls

  ' 25Jul11  Copied from RiskRegisterControl V43.xls.
  ' 22Nov11  Name changed from NewestFile to NewestFileName to match NextFileName.
  ' 20Apr12  Minor improvements

  Dim FileDateCrnt              As Date
  Dim FileDateNewest            As Date
  Dim FileNameCrnt              As String
  Dim FileNameNewest            As String

  If Right(Path, 1) <> "\" Then
    Path = Path & "\"
  End If

  FileNameCrnt = Dir$(Path & FileTemplate)
  If FileNameCrnt = "" Then
    NewestFileName = ""
    Exit Function
  End If

  FileNameNewest = FileNameCrnt
  FileDateNewest = FileDateTime(Path & FileNameCrnt)
  Do While True
    FileNameCrnt = Dir$
    If FileNameCrnt = "" Then Exit Do
    FileDateCrnt = FileDateTime(Path & FileNameCrnt)
    If FileDateCrnt > FileDateNewest Then
      FileNameNewest = FileNameCrnt
      FileDateNewest = FileDateCrnt
    End If
  Loop

  NewestFileName = FileNameNewest

End Function
函数NewestFileName(ByVal路径作为字符串,ByVal FileTemplate作为字符串)作为字符串
'*查找文件夹路径中具有名称的最新文件,并返回其名称
'匹配FileTemplate的。如果找不到匹配的文件,则返回“”。
'*要在其中搜索文件的路径文件夹
'*FileTemplate需要指定文件的文件名。例如:
'MyFile*.xls
'2011年7月25日从RiskRegisterControl V43.xls复制。
'22111年11月22日名称从NewestFile更改为NewestFileName以匹配NextFileName。
2012年4月20日轻微改进
Dim FileDateCrnt作为日期
Dim FILEDATE最新作为日期
Dim FileNameCrnt作为字符串
Dim FILENAME作为字符串显示
如果正确(路径1)“\”则
路径=路径&“\”
如果结束
FileNameCrnt=Dir$(路径和文件模板)
如果FileNameCrnt=“”,则
NewestFileName=“”
退出功能
如果结束
filenamenests=FileNameCrnt
filedatelatest=FileDateTime(路径和文件名crnt)
做正确的事
FileNameCrnt=Dir$
如果FileNameCrnt=“”,则退出Do
FileDateCrnt=FileDateTime(路径和文件名crnt)
如果FileDateCrnt>FileDateLatest,则
filenamenests=FileNameCrnt
FileDateNewest=FileDateCrnt
如果结束
环
NewestFileName=filename最新
端函数

我同意肯的观点:你一个问题问得太多了。“从我的输入工作簿中获取数据,然后将其粘贴到我的输出工作簿中”可能意味着什么。然而,这是我用来解决您需求的第一部分的函数。参数是文件夹名称和文件模板。它返回文件夹中与模板匹配的最新文件的名称

Function NewestFileName(ByVal Path As String, ByVal FileTemplate As String) As String

  ' * Finds, and returns the name of, the newest file in folder Path with a name
  '   that matches FileTemplate.  Returns "" if no matching file is found.

  ' * Path          Folder in which to search for files
  ' * FileTemplate  File name specification of the file required.  For example:
  '                     MyFile*.xls

  ' 25Jul11  Copied from RiskRegisterControl V43.xls.
  ' 22Nov11  Name changed from NewestFile to NewestFileName to match NextFileName.
  ' 20Apr12  Minor improvements

  Dim FileDateCrnt              As Date
  Dim FileDateNewest            As Date
  Dim FileNameCrnt              As String
  Dim FileNameNewest            As String

  If Right(Path, 1) <> "\" Then
    Path = Path & "\"
  End If

  FileNameCrnt = Dir$(Path & FileTemplate)
  If FileNameCrnt = "" Then
    NewestFileName = ""
    Exit Function
  End If

  FileNameNewest = FileNameCrnt
  FileDateNewest = FileDateTime(Path & FileNameCrnt)
  Do While True
    FileNameCrnt = Dir$
    If FileNameCrnt = "" Then Exit Do
    FileDateCrnt = FileDateTime(Path & FileNameCrnt)
    If FileDateCrnt > FileDateNewest Then
      FileNameNewest = FileNameCrnt
      FileDateNewest = FileDateCrnt
    End If
  Loop

  NewestFileName = FileNameNewest

End Function
函数NewestFileName(ByVal路径作为字符串,ByVal FileTemplate作为字符串)作为字符串
'*查找文件夹路径中具有名称的最新文件,并返回其名称
'匹配FileTemplate的。如果找不到匹配的文件,则返回“”。
'*要在其中搜索文件的路径文件夹
'*FileTemplate需要指定文件的文件名。例如:
'MyFile*.xls
'2011年7月25日从RiskRegisterControl V43.xls复制。
'22111年11月22日名称从NewestFile更改为NewestFileName以匹配NextFileName。
2012年4月20日轻微改进
Dim FileDateCrnt作为日期
Dim FILEDATE最新作为日期
Dim FileNameCrnt作为字符串
Dim FILENAME作为字符串显示
如果正确(路径1)“\”则
路径=路径&“\”
如果结束
FileNameCrnt=Dir$(路径和文件模板)
如果FileNameCrnt=“”,则
NewestFileName=“”
退出功能
如果结束
filenamenests=FileNameCrnt
filedatelatest=FileDateTime(路径和文件名crnt)
做正确的事
FileNameCrnt=Dir$
如果FileNameCrnt=“”,则退出Do
FileDateCrnt=FileDateTime(路径和文件名crnt)
如果FileDateCrnt>FileDateLatest,则
filenamenests=FileNameCrnt
FileDateNewest=FileDateCrnt
如果结束
环
NewestFileName=filename最新
端函数

我不知道你在问什么。你需要说得更清楚些。在这样做时,请记住,除了您在问题中告诉我们的信息外,我们没有任何关于您试图做什么的信息;我们无法读懂你的心思来理解你想告诉我们什么。请清楚地说明问题并提出具体问题。请看一些提示。好的,很抱歉,我会设法解决它。我不知道你在问什么。你需要说得更清楚些。在这样做时,请记住,除了您在问题中告诉我们的信息外,我们没有任何关于您试图做什么的信息;我们无法读懂你的心思来理解你想告诉我们什么。请清楚地说明问题并提出具体问题。请看一些提示。好的,很抱歉,我会尝试修复它。我想这就是我想要的。。。我想要的是,当我按下excel输出表上的按钮时,它会复制最新输入表中的所有内容,并将其粘贴到输出表中。这是一个程序员互相帮助开发技能的网站。没有人可能会为您编写整个宏。将您的要求分成几个小步骤:(1)查找最新的工作簿,(2)以
Src
的形式打开工作簿,(3)将所选工作表从
Src
复制到
ThisWorkbook
(4)关闭
Src
,而不保存更改(5)将宏链接到按钮。我已经为您提供了步骤(1)的代码。查找如何打开工作簿。你是含糊不清的,我要确保我的步骤(3)是你想要的,所以澄清你的要求。如果我的步骤(3)正确,请查阅复制工作表或使用宏记录器。查阅步骤(4)和(5)。如果你遇到困难,一步一个脚印地寻求帮助。如果按照我的建议分解宏,您可以自己创建宏。快乐编程。我想这就是我想要的。。。我想要的是,当我按下excel输出表上的按钮时,它会复制最新输入表中的所有内容,并将其粘贴到输出表中。这是一个程序员互相帮助开发技能的网站。没有人是