Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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,我对vba很陌生。我从这个网站复制了一些代码,并将它们编辑到我的目的中,从而使它们能够工作,但是这个代码太难破解了(我已经尝试了几天来解决这个问题) 我想从一个文件复制数据并将其粘贴到另一个文件(主文件)。但是,它不能覆盖现有数据,因此它应该选择特定列中的第一个空单元格。请帮帮我!!如果可能的话,你可以添加尽可能多的评论,以便我能够理解并学会在将来为自己做这件事 数据文件是调用日志,复制的这些数字是我在vba中执行的分析结果。因此,每天都会有一个新的数据文件,但我复制的实际数据始终位于相同的单元

我对vba很陌生。我从这个网站复制了一些代码,并将它们编辑到我的目的中,从而使它们能够工作,但是这个代码太难破解了(我已经尝试了几天来解决这个问题)

我想从一个文件复制数据并将其粘贴到另一个文件(主文件)。但是,它不能覆盖现有数据,因此它应该选择特定列中的第一个空单元格。请帮帮我!!如果可能的话,你可以添加尽可能多的评论,以便我能够理解并学会在将来为自己做这件事

数据文件是调用日志,复制的这些数字是我在vba中执行的分析结果。因此,每天都会有一个新的数据文件,但我复制的实际数据始终位于相同的单元格中。另一方面,主文件总是相同的,但粘贴数据的范围会发生变化

示例数据文件: 25(“excel数据文件中的S1”) 44(“exel数据文件中的S2”) 8.6.2013(“excel数据文件中的S13”) 这些都是使用包含公式的vba代码创建的,因此它们将始终位于同一单元格中。还有一些其他的数据单元,但我希望从中学习,这样我就可以自己包含它们

另一方面,主文件总是相同的。主文件中唯一的变化是粘贴数据的单元格。该单元格实际上总是上一次插入后的行

主文件: 数据文件中的单元格S1应复制到主文件“N3”,然后下次复制到“N4”,然后复制到“N5”,依此类推。。。所以它应该在N列中找到第一个自由单元

数据文件中的单元格S2应复制到主文件“H3”中,并以与前面相同的方式从主文件“H3”向下复制

数据文件中的单元格S13应以与前面相同的方式复制到主文件“A3”并向下复制

编辑:

这是在主文件中检索整个列B的方法,但它会覆盖整个列。因此,从一个始终相同的文件导入工作时间效果很好。对于分析数据文件,问题是上面的代码是从主文件开始工作的,在这种情况下,当数据文件实际上每天都在更改时,我不知道如何更改它以检索正确的文件

Sub Work_hours()

' copy_paste1 Macro

Dim wsMaster As Worksheet, wbDATA As Workbook
Dim NextRow As Long, LastRow As Long

Set wsMaster = ThisWorkbook.Sheets("Sheet1")
 NextRow = wsMaster.Range("A" & Rows.Count).End(xlUp).Row + 1

Set wbDATA = Workbooks.Open("\\C:\users\heppanetti\Google Drive\heppanetti\outbound\working_hours.xlsx")

 With wbDATA.Sheets("Sheet1")
 Columns("B:B").Select
 Selection.Copy
 Windows("ColdCalling_Stats_template.xlsx").Activate
 Columns("B:B").Select
 ActiveSheet.Paste

 wbDATA.Close False
 End With
 End Sub

我得到了宏的第一部分工作,但现在我应该能够在文档之间切换。发件人文档名称未知,这在激活中造成问题

Option Explicit

Sub SendToMaster()
'this macro goes IN the sender workbook
Dim wsSEND As Worksheet, wbMASTER As Workbook
Dim NextRow As Long, LastRow As Long

Set wsSEND = ThisWorkbook.Sheets("Sheet1")
 Range("S2").Select
Selection.Copy

Set wbMASTER = Workbooks.Open("\\c:\users\heppanetti\Google Drive\heppanetti\outbound\ColdCalling_stats_template.xlsx ")
Windows("ColdCalling_stats_template.xlsx").Activate
Range("H1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False

 'here the macro should activate the SENDER workbook again.
 'However the name is unknown, thus Windows("fileName.xlsm").Activate does not work
  Set wsSEND = ThisWorkbook.Sheets("Sheet1")
  Range("S1").Select
Selection.Copy


 Windows("ColdCalling_stats_template.xlsx").Activate
 Range("N1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False




 wbMASTER.Close True     'save and close the master

 End Sub

我认为这有助于您找到第一个空行。但为了更好地理解,您可以始终使用Excel中的“录制宏”工具,并以编程方式执行您希望执行的操作,然后您可以停止它并检查生成的宏代码,这将真正帮助您了解Excel自动化的结构。谢谢!事实上,我已经试着录制了一整天的宏,但问题是实际上从主文件中找到了空单元格。我还设法写了一个代码,复制正确的单元格,但由于某些原因,它没有粘贴到任何地方。。。甚至没有报告任何错误。你检查过我说的链接吗?它会帮你找到第一个空的牢房。我不知道如何复制和粘贴一个值,你可以得到一个单元格的值,然后自己写在首选单元格中。