【问题标题】:using copy destination vba between workbooks在工作簿之间使用复制目标 vba
【发布时间】:2019-03-04 23:29:42
【问题描述】:

一直在使用录制的宏完成工作簿之间的复制和粘贴的项目。录制的宏一直在工作,但是在阅读论坛时,人们说复制/粘贴方法需要更多时间才能运行宏,而且效率非常低。所以我试图找出一个复制目标 vba 行,它将复制从 Range(A2:G2000) 开始的几列,然后粘贴到从 (B6:H2000) 开始的范围区域。我不擅长这一点,并试图学习更多的效率。这里想到两件事。我有一个简单的复制和粘贴方法。但是会使用直接源 = 目的地。这可以做到吗?阅读本文后,您可能会看到另一个问题。为什么选择并复制/粘贴到第 2000 行?你的想法是正确的。一些报告(txt 文件)有 100 行,大约 300 行,不超过 1000 行,但我过度选择了副本,因为我不确定未来的 txt 文件。我在想如果你可以只选择最后一行使用的列会很酷。这远远超出了我。我很高兴有一种有效复制/粘贴的新方法。
我将不胜感激任何人可以提供的任何帮助。让我知道你的想法。 谢谢 婴儿潮

enter code here
   Sub import_data()
   '
   '
    'import_data
    '
    Application.ScreenUpdating = False
    '
   'Opens the txt file in excel - text delimited and leaves file open until 
   we close at bottom of code. There is no        'name for this workbook.

    Workbooks.OpenText (Module33.FileDir + "\cf_data.txt"), Origin:=437, _
    StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
    , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), 
      _
     Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), 
   TrailingMinusNumbers:=True


  'The line below is where I'm selecting data from the current opened 
  workbook and copying to another workbook

   ActiveWindow.Sheet1.Range("A2:G2000").Copy 
    Destination:=Workbooks("Auto_Data.xlsm").Sheet2.Range       ("B6:H2000")



   'This info below is a (recorded marco).  All works if I rem out the above 
    line and open up all the below lines

    '    Range("A2:G2000").Select
    '    Selection.Copy
    '    Windows("Auto_Data.xlsm").Activate
    '    Sheet2.Select
   '    Range("B6:H6").Select
    '    ActiveSheet.Paste
    '    Selection.AutoFilter
    '    Application.CutCopyMode = False
    '    ActiveWindow.ActivateNext
    '    ActiveWindow.Close
    '    Range("B4").Select
    Application.ScreenUpdating = True

   End Sub

【问题讨论】:

  • 显示您的代码。您有很多问题没有得到解答,但您的代码会解释这些问题。
  • Edit 你的问题包括你的代码。作为评论无法解读。
  • 点击Editedit你的问题。粘贴代码,然后再次全选并点击 ctrl+K。
  • 好的,我想我已经把它贴在那里了。有空的时候请看一下。希望它不会太混乱。谢谢!!

标签: excel vba multiple-columns copy-paste


【解决方案1】:

直接值传输通常比副本更快,并且使用更少的内存,因为它不涉及剪贴板。

Sub import_data()

    dim lr as long, arr as variant
    dim wb1 as workbook

    set wb1 = Workbooks.OpenText(filename:=Module33.FileDir & "\cf_data.txt"), Origin:=437, _
                                 StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
                                 ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, _
                                 Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
                                 Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), 
                                 TrailingMinusNumbers:=True)

    with wb1.sheets(1)

        lr = .range("A:G").Find(what:="*", after:=.range("A1"), searchorder:=xlbyrows, _
                                searchdirection:=xlprevious).row
        .range(.cells(2, "A"), .cells(lr, "G")).value

    end with

    wb1.close

    Workbooks("Auto_Data.xlsm").Sheet2.Range("B6").resize(ubound(arr, 1), ubound(arr, 2)) = arr

end sub

【讨论】:

  • 感谢您的回复。我一直在看这个。我将代码插入应用程序并收到 [编译错误:预期:语句结束]。这似乎遇到的错误是 set wb1 = Workbooks.OpenText(filename:=Module33.FileDir & "\cf_data.txt"), Origin:=437, _ 并且在 [ "\ cf_data.txt"),
  • 我返回并确认了该区域额外空格的语法,一切看起来都不错。不确定预期的代码需要什么:语句结束?到目前为止,我还无法测试代码。请让我知道我可以采取的一些故障排除步骤。再次感谢您帮助我。
  • 您好 User11138753,我正在尝试粘贴新代码供您查看。由于上述内容在 excel 区域中的“打开文本文件”中出现错误,我想将代码向下推 [Set wb1 =] 到 [With wb1.Sheets(1)] 上方并添加 [Set wb1 = ThisWorkbook]。测试时,文本分隔文件可以在 excel 中正常打开。然后excel休息。突出显示的行是 [ .Range(.Cells(2, "A"), .Cells(lr, "G")).Value ],错误是 [ Run-time Error 438: Object doesn't support this property或方法。 ]
  • 是的,很抱歉没有注意到这个评论和代码复制/粘贴。因此,上面的代码是我的想法,由于打开的文本文件分隔区域正确打开了文件,我将您的 WB1 变量设置向下移动到正下方。并添加了 ThisWorkbook。以为 xls 文件是打开的,所以我们可以设置 wb1 = ThisWorkbook,然后继续 wb1.Sheets(1)。可能是错的。只是想。代码运行,并停在 [ .Range(.Cells(2, "A"), .Cells(lr, "G")).Value ] 突出显示带有上述错误的整行。我正在阅读代码并试图理解它。灯还没亮,会的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
相关资源
最近更新 更多