VBA Excel将剪贴板数据复制到数组

Apo*_*a61 0 excel vba excel-vba microsoft-project-vba

我正在一个项目中工作,我必须使用Crt A + Crt C从网页复制一些文本然后我想在Excel中使用这个数据,复制的文本大约是100行,具有不同的大小让我们说在线有一个字符串200图表和下一个图表500图表.而第3个可能是20有没有办法循环剪贴板数据行并将它们复制到数组?

我添加复制的样本(在页面中制作Crt A Crt C)文本:

注意:我删除了一些行

用户名为XXXXXXXXXXXXXXXXX DashboardAnalyticsPolicyAdministration Web Insights打印视图重新开始1选择图表类型日志应用过滤器2选择时间帧自定义:9/1/2015 12:00:00 AM - 9/30/2015 12:00:00 AM 3选择过滤器添加过滤器2.4 TB 2.0 TB 879.9 GB 656.8 GB 472.0 GB 442.4 GB 242.1 GB 213.5 GB 189.3 GB 103.8 GB Office 365 - SSL绕过专业服务流媒体网站每个人互联网服务企业营销杂项网络搜索新闻和媒体社交网络URL CategoryTop 10TransactionsBytes注意:如果你粘贴这个文本到记事本,你会逐行看到它

Joh*_*man 5

要跟进我的评论,如果按照此处的说明添加对Microsoft Forms Library 2.0(Tools/References在VBA编辑器中)的引用,以下函数将获取剪贴板的内容并将其拆分为行:

Function ClipToArray() As Variant
    Dim clip As New MSForms.DataObject
    Dim lines As String
    clip.GetFromClipboard
    lines = clip.GetText
    lines = Replace(lines, vbCr, "")
    ClipToArray = Split(lines, vbLf)
End Function
Run Code Online (Sandbox Code Playgroud)

你可以像这样测试它:

Sub test()
    Dim A As Variant
    Dim i As Long
    A = ClipToArray()
    For i = LBound(A) To UBound(A)
        Debug.Print A(i)
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

然后我去了这个网站并复制了这首诗然后跑了test.我在即时窗口中得到以下输出:

Some say the world will end in fire,
Some say in ice.
From what I've tasted of desire
I hold with those who favor fire.
But if it had to perish twice,
I think I know enough of hate
To say that for destruction ice
Is also great
And would suffice. 
Run Code Online (Sandbox Code Playgroud)

这很好用,虽然你不必在从互联网上复制的文本中运行许多实验,然后才能看到表面解析使用split很多东西.

  • 是否必须使用“替换”?似乎您可以执行`ClipsToArray = Split(lines,vbCrLf)`。 (2认同)