【问题标题】:Excel VBA - Copy and Paste each cell Individually to another programExcel VBA - 将每个单元格分别复制并粘贴到另一个程序
【发布时间】:2020-07-26 03:47:18
【问题描述】:

我对 VBA 还很陌生,但对它有点了解(有点)。我需要做的是获取一个宏集来复制一个单元格中的数据,切换到另一个程序(2315),输入“6”,[ENTER],粘贴数据,[ENTER]切换回Excel,选择下一行,复制,切换,粘贴,切换,直到它到达列的末尾。这就是我所拥有的,适用于第一个单元格。我只需要弄清楚如何循环它直到它到达终点。感谢您的任何帮助/建议!

Range("A2").Select
Selection.Copy
AppActivate "2315"
Application.SendKeys "6~^V~"
Application.SendKeys "%{TAB}"

再次感谢!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我怀疑这行得通,但你说它行得通,你的问题是关于循环的。这是循环。

    Dim R       As Long
    
    For R = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        Cells(R, "A").Copy
        AppActivate "2315"
        Application.SendKeys "6~^V~"
        Application.SendKeys "%{TAB}"
    Next R
    

    为了 Excel,您无需选择任何内容。上面的代码将遍历活动选项卡的 A 列中所有使用的单元格。如果您的应用“2315”需要选择,请在复制指令前添加Cells(R, "A").Select

    我的怀疑是基于您不能使用 VBA 将参数发送到应用程序“2315”的事实。这包括对“2315”的指令,以将控制权交还给 Excel 及其 VBA。也许您已经通过 SendKeys 找到了这种方法。如果是这样,代码将起作用。如果不是,它会在第一个循环后卡住。

    从逻辑上讲,代码应该一直运行到 AppActivate “2315”,这意味着在其他应用返回控制权之前永远不会发送 SendKey。如果这是正在发生的事情,那么必须有更好的方式来表达你完成的两条指令。但这不应该是你的直接关注。如果您可以使用 Enter 之类的简单命令让“2315”将控制权交还给 Excel,并且如果上述宏真的从中断的地方恢复工作,那么您的大部分问题应该得到解决。这是我希望的:-)

    【讨论】:

    • 完美!这正是我一直在寻找的。我实际上取出了 SendKeys altTab,它就像一个魅力。不知道不使用 VBA 将参数发送到我的其他应用程序是什么意思,但无论哪种方式,这正是我所需要的并且它有效!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多