【发布时间】:2014-07-09 12:12:42
【问题描述】:
我在一个文件夹中有很多文件,
我的代码如下,有什么方法可以简化我的代码,这样我就不需要继续复制和粘贴相同的代码,而是继续更新行号?
Sub FetchData()
Dim wbSource As Workbook
Dim shSource As Worksheet
Dim shDestin As Worksheet
Application.ScreenUpdating = False
'trace file from file path on B12
Workbooks.Open Filename:=Range("B12").Value & Sheets("Sheet1").Range("A1")
Set wbSource = ActiveWorkbook
Set shSource = wbSource.Sheets("Sheet1")
'current sheet display
Set shDestin = ThisWorkbook.Sheets("Sheet1")
'shDestion.Range display at where shSource.Range: the track data frm other file (NI)
shDestin.Range("E12") = shSource.Range("C2")
shDestin.Range("F12") = shSource.Range("D2")
shDestin.Range("G12") = shSource.Range("E2")
'shDestion.Range display at where shSource.Range: the track data frm other file (PD)
shDestin.Range("N12") = shSource.Range("C3")
shDestin.Range("O12") = shSource.Range("D3")
shDestin.Range("P12") = shSource.Range("E3")
'shDestion.Range display at where shSource.Range: the track data frm other file (AU)
shDestin.Range("W12") = shSource.Range("C4")
shDestin.Range("X12") = shSource.Range("D4")
shDestin.Range("Y12") = shSource.Range("E4")
‘copy from another workbook where filepath is at B11
Workbooks.Open Filename:=Range("B11").Value & Sheets("Sheet1").Range("A4")
Set wbSource = ActiveWorkbook
Set shSource = wbSource.Sheets("Sheet1")
'current sheet display
Set shDestin = ThisWorkbook.Sheets("Sheet1")
'shDestion.Range display at where shSource.Range: the track data frm other file (NI)
shDestin.Range("E11") = shSource.Range("C2")
shDestin.Range("F11") = shSource.Range("D2")
shDestin.Range("G11") = shSource.Range("E2")
'shDestion.Range display at where shSource.Range: the track data frm other file (PD)
shDestin.Range("N11") = shSource.Range("C3")
shDestin.Range("O11") = shSource.Range("D3")
shDestin.Range("P11") = shSource.Range("E3")
'shDestion.Range display at where shSource.Range: the track data frm other file (AU)
shDestin.Range("W11") = shSource.Range("C4")
shDestin.Range("X11") = shSource.Range("D4")
shDestin.Range("Y11") = shSource.Range("E4")
wbSource.Close False
End Sub
【问题讨论】:
-
您要复制/粘贴哪段代码?全部还是部分?您指的行号在哪里?是在代码中还是在 Excel 工作表中?
-
当然有一些方法可以优化这个,例如你可以做
shDestin.Range("E12:G12") = shSource.Range("C2:E2")等,但我认为如果你需要在循环/重复中这样做,还有进一步的改进空间. -
代码在Excel文件中,我设置了一个按钮来跟踪多个文件中的一些数据。行号将是我希望 shDestin.Range 行号的行号。我可以做一个循环吗?
-
当我输入 shDestin.Range("E12:G12") = shSource.Range("C2:E2") 时,显示类型不匹配。
-
您的问题陈述不清楚。您需要使用循环。但我不排除完全没有任何 VBA 就可以做到这一点的可能性。此外,对于诸如 shDestin.Range("E11") = shSource.Range("C2") 之类的语句,您需要使用 shDestin.Range("E11").value = shSource.Range("C2")。否则它会抛出一个错误。
标签: vba excel excel-2010 file-copying