将数据导入到名称更改为

时间:2018-03-12 15:53:49

标签: excel vba excel-vba import excel-formula

我正在尝试将选定工作簿中的数据复制并粘贴到我的主文件中。我遇到的一个主要问题是返回到主文件,原因是主文件的名称每个月都会更改为其运行的月份。下个月运行时,本月“四月主文件”的“三月主文件”。我尝试通过引用文件路径返回到该文件,但它不起作用,例如“窗口(TEMPLATEFile).Activate”。是否有更简单的方法来编写此文件并且不必引用文件路径的任何建议?

这是我到目前为止所做的:

Sub ImportRepurchData()

    Dim combinedBook As Workbook
    Dim filter As String
    Dim caption As String
    Dim combinedFilename As String
    Dim combinedWorkbook As Workbook
    Dim targetWorkbook As Workbook

    TEMPLATEFile = Sheets("Dynamic").Range("ImportRepurch")
    ' Open Source Data

    Set targetWorkbook = Application.ActiveWorkbook

    filter = "Text files (*.xlsx),*.xlsx"
    caption = "Please Select an input file"
    combinedFilename = Application.GetOpenFilename(filter, , caption)

    Set combinedWorkbook = Application.Workbooks.Open(combinedFilename)
    ' Paste Source Data into original workbook

    Range("P4:P100000,AL4:AL100000").Select
    Selection.Copy

    Windows(TEMPLATEFile).Activate

    Sheets("Input Sched-Unsched Split").Select
    Range("B9:B100000,C9:C100000").Select
    ActiveSheet.Paste

    combinedWorkbook.Close

End Sub

2 个答案:

答案 0 :(得分:0)

如果从主文件中运行代码,则可以使用     的ThisWorkbook 代替     Application.Workbooks(someIndexOrName)

本工作簿始终是运行代码的工作簿,即使它是加载项(XLAM)。

如果不是这种情况,您可以编写一个识别工作簿的功能,例如:基于是否存在具有特殊名称(或代码名称)的工作表。甚至可能是多张表。然后你可以遍历Application.Workbooks,直到找到你的主文件

答案 1 :(得分:0)

另一点是,这会给你带来麻烦:

Range("P4:P100000,AL4:AL100000").Select
Selection.Copy

Windows(TEMPLATEFile).Activate

Sheets("Input Sched-Unsched Split").Select
Range("B9:B100000,C9:C100000").Select
ActiveSheet.Paste

当你可以用

达到同样的效果
 combinedWorkbook.range("P4:P100000").copy targetworkbook.worksheets(""Input Sched-Unsched Split").range("B9")
 combinedWorkbook.range("al4:al100000").copy targetworkbook.worksheets("Input Sched-Unsched Split").range("c9")

永远不要在VBA中使用select或activate