将数据批量粘贴到Excel中

时间:2013-11-18 16:12:52

标签: excel vba

我需要处理大量数据。我通过将原始数据粘贴到预先制作的Excel电子表格中来处理它,在处理(未粘贴)列的底部修剪几行零,然后运行宏以删除列P中的0中的单元格

每个电子表格都有6组原始数据,每组都在一个单独的工作表中。零删除宏需要一段时间,所以如果可以的话,我想将粘贴作为一个单独的工作。

我觉得这应该很简单但不幸的是我只有非常基本的代码知识。到目前为止,我的想法是尝试使用AutoHotKey记录序列来完成它,但不幸的是它很笨拙并且到目前为止还没有工作,因为alt-tabbing是不可靠的或其他问题。

我想创建一个在Windows之间切换的代码,将数据从一个excel(制表符分隔的.txt)文件复制到主.xlsm文档中。

我会手动保存它,然后打开接下来的6个数据集和一个空白处理工作簿。

感谢您的时间x

编辑:数据集始终称为a,a1,a2,b,b1,b2。它们始终位于与数据处理电子表格相同的文件夹中。数据处理电子表格始终称为[processor.xlsm]

Edit2:这就是我所在的地方:

Sub ImportData1()

'Prevent windows asking about saving clipboard data
Application.DisplayAlerts = False

'select dataset a
Worksheets("SeqA Run1").Activate
Workbooks.Open Filename:=ThisWorkbook.Path & "\a.txt"
ActiveSheet.Range("A4:I1000").Copy

Windows("Surge Test Data Analysis Importer.xlsm").Activate
Range("A7").Select
ActiveSheet.Paste
''Close dataset
Windows("a.txt").Activate
ActiveWorkbook.Close


'Select dataset a1
Worksheets("SeqA Run2").Activate
Workbooks.Open Filename:=ThisWorkbook.Path & "\a1.txt"
ActiveSheet.Range("A4:I1000").Copy

Windows("Surge Test Data Analysis Importer.xlsm").Activate
Range("A7").Select
ActiveSheet.Paste
''Close dataset
Windows("a1.txt").Activate
ActiveWorkbook.Close

'(repeat several times)


'Re-enable windows prompts about clipboards etc

Application.DisplayAlerts = True


End Sub

1 个答案:

答案 0 :(得分:1)

您无需在窗口之间切换。您必须获得对工作表的引用,并使用引用。要做的第一件事是记录一个宏,然后手动执行任何操作。停止录制,然后开始修改生成的宏。

然后,在你的宏中,

Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = Workbooks("<The name of your target Workbook>")
Set wb2 = Workbooks("<The name of your source Workbook>")
Set ws1 = wb1.Worksheets("<The name of your target> Worksheet")
Set ws2 = wb2.Worksheets("<The name of your source> Worksheet")
ws2.UsedRange.Copy
ws1.Paste

您可能需要粘贴到目标中的特定位置。

重复需要循环(例如,For ... Next)。如果您提供有关您案例的更多信息,那将会有所帮助。

请记住,分配给Worksheet类型的变量时应该以{{1​​}}开头。