使用VBA从Excel中的剪贴板访问文本文件

时间:2012-07-26 07:28:06

标签: excel vba excel-vba clipboard

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

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

2 个答案:

答案 0 :(得分:0)

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

STEP 1

STEP 2

STEP 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

答案 1 :(得分:0)

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

Range("A1").Select
ActiveSheet.Paste

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

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

使用

创建一个包含多个值的数组
anArray = Split(stringLine, "|")

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