2012-07-26 80 views
0

我试图创建Excel中的宏读取文本文件的内容,创造了一个新的工作簿,比使用创建的工作簿中的特定部分。为了能够轻松访问所需的列,我使用了Workbook.OpenText。但不是插入修复路径到我的文件,我想获得我复制到剪贴板的文件的路径。我的问题是,我不知道如何访问windows的剪贴板。我找到了关于使用剪贴板here的教程,但我无法访问预期的库。我也在我的电脑上搜索了一个名为FM20.DLL的文件,就像这个forum中所解释的那样,但是找不到任何东西。 这里是我的代码:访问从剪贴板文本文件在Excel中使用VBA

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 
+0

这是否帮助? http://stackoverflow.com/questions/9022245/get-text-from-clipboard-using-gettext-avoid-error-on-empty-clipboard让我知道如果你仍然需要帮助? – 2012-07-26 14:00:52

+0

我仍然有问题,使用OpenText从剪贴板访问文件。在剪贴板内部没有路径,但OpenText只能使用路径。我不知道其他方法,如何在同一开头打开一个文本,从而使内容将被格式化就像在我的代码片断 – 2012-07-30 07:59:26

回答

0

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

Range("A1").Select 
ActiveSheet.Paste 

这不是我的问题的答案,但看起来像以前一样的答案很容易给我。它也有效,但我不得不手动导入库并编写更多的代码。 我必须访问代码的方式现在是另一种。我从行跳转到行,获取保存在一个变量的行,从字符串

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

删除空格和使用

anArray = Split(stringLine, "|") 

反正创建具有几个值的数组,谢谢你帮助;)

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 
+0

感谢您的解释。我创建了UserForm,但不能像第二张图片中那样删除它。也许你可以向我解释,这是必须完成的。此外,我有德语版本的VBA编辑器。所以不知道如何设置参考。它是以“全球”开头的大名单吗?因为我无法在此列表中找到该库。 – 2012-07-26 08:02:38

+0

你也可以手动添加引用文件要'' “X:\ WINDOWS \ SYSTEM32 \ FM20.DLL”''''X''就是安装Windows的驱动器。 – Cylian 2012-07-26 08:08:07

+0

我刚刚解决了这个问题,插入了库。我一直没有停止我的剧本,所以这是不可能创建一个参考.... 您脚本工作,但其仅适用于将在任何地方复制纯文本。这不适用于孔文件。是否有可能获得路径? – 2012-07-26 09:11:49