-1

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

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

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

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

另一方面,主文件始终相同。主文件中唯一不同的是我粘贴数据的单元格。单元格实际上总是在前一个插入下面的行。

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

数据文件中的单元格 S2 应复制到主文件“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
4

1 回答 1

0

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

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
于 2013-06-10T10:41:34.367 回答