我需要处理大量数据。我通过将原始数据粘贴到预先制作的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
答案 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}}开头。