2010-05-04 212 views
1

我想檢索超鏈接到Excel中的單元格,然後將此超鏈接粘貼到第三方應用程序中。單擊超鏈接應該將Excel加載到相應的工作簿,並且應該使用遊標選擇該單元格。超鏈接到單元格?

該超鏈接應該可以在Microsoft相關產品(如OneNote)中使用;例如,如果我有一個工作簿「D:\ abc.xls」,並且我想跳轉到單元格C12,則會創建一個超鏈接,如「D:\ abc.xls#C12」。

這會工作;但是,如果我將其粘貼到非Microsoft應用程序中,它只是打開Excel和工作簿,但單元格未突出顯示。我怎樣才能使這個工作?

+0

據我所知,沒有。 OneNote會做很多「有趣」的事情。我是OneNote 2003和2007的用戶,以及自Office 95以來的Office開發人員。到目前爲止,OneNote仍然讓我驚訝於它的一些功能。我相信OneNote使用「發送鍵」導航到特定的單元格。 Excel維護打開工作簿時恢復的「最新當前位置」。 – AMissico 2010-05-04 10:08:07

+0

可能有VBA宏提供此功能,因爲它是一個常見的請求。 – AMissico 2010-05-04 10:10:42

+0

@AMissico:我在「Word」中也嘗試過,它也可以在那裏使用!關於宏我已經做了一些Google搜索,但還沒有找到類似的功能。 – 2010-05-04 10:13:40

回答

1

RE評論

這就是我所建議,例如保存以下爲.reg和進口它

REGEDIT4 

[HKEY_CLASSES_ROOT\XLOPEN] 
@="URL:Excel Opener" 
"URL Protocol"="" 

[HKEY_CLASSES_ROOT\XLOPEN\shell\open\command] 
@="CSCRIPT.EXE \"C:\\TEMP\\XLOPEN.VBS\" \"%1\"" 

這使得一個XLOPEN:// URL協議處理程序調用運行XLOPEN.VBS時thatr。作爲C:\TEMP\XLOPEN.VBS

rem //get an argument like "XLOPEN://C:\null\text.xlsx/#F55" note extra/
dim arg: arg = WScript.Arguments.item(0) 
dim arr: arr = (split(ucase(arg), "#")) 
rem unmangle the url 
dim filename: filename = replace(arr(0), "XLOPEN://", "") 
if (right(filename, 1) = "/") then filename = mid(filename, 1, len(filename)-1) 
dim xl: set xl = createobject("excel.application") 
xl.Workbooks.Open filename 
xl.range(arr(1)).select 
xl.visible = true 

如果您運行

xlopen://c:\null\test.xlsx#Q50

或使用

<a href="xlopen://c:\null\test.xlsx#Q50">bla bla</a>

Windows將查找xlopen://

保存下列現在並將字符串xlopen://c:\null\test.xlsx/#Q50傳遞給XLOPEN.VBS,該文件將提取文件路徑c:\null\test.xlsx1並將其打開,然後在#之後選擇範圍。

如果在瀏覽器中調用/從shell /通過Windows API調用,則不起作用,不知道它是否可以在第三方應用中使用。 (你會用helper exe替換腳本)

+0

在您發佈之前,我嘗試了一些測試,例如打開Internet Explorer並粘貼鏈接D:\ abc.xls並打開文件,但是如果我粘貼了鏈接D:\ abc.xls#C12,它會給出錯誤信息。我想如果它在word和onenote中起作用,它也應該在IE中起作用,我想知道它爲什麼不打開單元格。感謝您的精心解釋。 – 2010-05-05 16:53:28

1

這必須是由Office應用程序自動完成的事情,因爲路徑:abc.xls#C12作爲一個整體是一個潛在的有效文件名本身 - 如果您嘗試從shell運行它,則會出現「路徑未找到」錯誤。

如果單擊在OneNote該鏈接,並期待在命令行中生成的Excel工作的情況下與在那裏開設了只有「-embedding」開關這可能意味着OneNote中被解析出abc.xls,通過其自動化功能啓動然後Excel激活C12

我想如果你想要這個功能,你需要使用助手應用程序來做同樣的事情,並使用像「C:\your_XL_loader.exe D:\abc.xls#C12」這樣的路徑。

(如果第三方應用程序的榮譽窗口協議左撇子的小事,使your_XL_loader.exe自身的東西,如XXX://abc.xls#C12關聯)

+0

第三方應用程序是一個Java應用程序,我不知道如何將_XL_loader.exe關聯到超鏈接。此外,超鏈接的#C12部分將根據我想要突出顯示的單元而變化。 – 2010-05-04 11:10:09

+0

它只是一些註冊表設置:http://msdn.microsoft.com/en-us/library/aa767914%28VS.85%29.aspx - 但它依賴於Java應用程序足夠聰明,以瞭解自定義url協議處理程序或至少將它們傳遞給shell。 – 2010-05-04 11:22:11

+0

對不起,我無法理解這個,_XL_loader.exe是什麼?您看到我有一個將啓動url請求的java應用程序,您是否希望我製作一個幫助器應用程序,以便我們接受此請求,然後將其傳遞給excel並以excel可理解的格式進行卓越,是嗎? – 2010-05-05 12:27:00