0

我尝试为 excel 创建一个宏,它读取文本文件的内容,创建一个新的工作簿,然后使用创建的工作簿中的特定部分。为了能够轻松访问所需的列,我使用了 Workbook.OpenText。但是,我不想为我的文件插入一个修复路径,而是想获取我复制到剪贴板的文件的路径。我的问题是,我不知道如何访问 Windows 的剪贴板。我在这里找到了有关使用剪贴板的教程,但我无法访问预期的库。我还在我的计算机上搜索了一个名为 FM20.DLL 的文件,如本论坛中所述,但找不到任何内容。这是我的代码:

Workbooks.OpenText Filename:="C:\path\to.txt", Origin _
        :=-535, StartRow:=16, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1 _
        ), Array(14, 1), Array(58, 1), Array(68, 1)), TrailingMinusNumbers:=True
4

2 回答 2

0

假设您根本不需要任何用户表单

第1步

第2步

第 3 步

现在添加代码

Sub ShowClipboardData()
    'In the VBA editor, go to Tools, References, and set a reference to the "Microsoft Forms 2.0 Object Library"
    Dim MyDataObject As DataObject
    Set MyDataObject = New DataObject
    MyDataObject.GetFromClipBoard
    MyDataObject.GetText
    MsgBox CStr(MyDataObject.GetText)
End Sub
于 2012-07-26T07:50:47.757 回答
0

我只是以不同的方式解决了这个问题。我不再使用 OpenText 方法。我使用以下代码从剪贴板插入到我的工作表中:

Range("A1").Select
ActiveSheet.Paste

这不是我的问题的答案,但对我来说看起来更容易作为之前的答案。它也有效,但我必须手动导入库并编写更多代码。我必须访问代码的方式现在是另一种方式。我从一行跳到另一行,将行保存在变量中,从字符串中删除空格

stringLine = Replace(Range("A" & row).Value, " ", "")

并通过使用创建一个具有多个值的数组

anArray = Split(stringLine, "|")

无论如何,谢谢你的帮助;)

于 2012-08-03T08:57:19.740 回答