我有一个宏,可在其中打开一个文本文件,以将几列复制并转置到工作表中。到目前为止,这实际上是可行的。但是,由于我现在打开文本文件,复制一列,返回到我原来的工作表中,粘贴并转置数据,然后在两张表之间来回切换,直到所有相关的列都被复制了,所以我认为可以对其进行优化如果我对VBA有更好的了解。
所以我的问题是,我是否可以将列数据另存为范围,然后一次将其全部复制,然后一次将其粘贴并转置?
或者这不会对宏的速度产生任何影响吗?
而且,由于我实际上正在打开许多文本文件(打开一个文本文件,将其关闭,打开下一个文件,将其关闭,等等),当打开一个新的文本文件时,是否有可能覆盖范围?
我在下面显示了我的代码示例,希望您能理解它:
'要复制的第一选择 ActiveSheet.Cells(行温度+ 1,1)。选择 范围(选择,选择。结束(xlDown))。选择
Selection.Copy
'Go back to original sheet
Windows(Left(f, Len(f))).Activate
'Paste and Transpose Data
If IsEmpty(ActiveSheet.Cells(4, 2).Value) = True Then
ActiveSheet.Cells(4, 1).Select
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
ActiveSheet.Cells(4 + 5 + Range("A2").Value, 1).Select
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End If
'Copy 2nd set of Data
Windows(Left(z, Len(z))).Activate
Range("B1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(Left(f, Len(f))).Activate
'Paste and Transpose 2. set of data
If IsEmpty(ActiveSheet.Cells(5, 2).Value) = True Then
ActiveSheet.Cells(5, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
ActiveSheet.Cells(5 + 5 + Range("A2").Value, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End If