2012-07-26 108 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

相關問題