我在 Windows 10 中使用虛擬桌面已經有一段時間了。它工作正常,我發現並希望解決的唯一問題是以下情況:
- 我有虛擬桌面1使用 Microsoft Excel 或 Microsoft Word 在 Sheet.xlsx 或 Doc.docx 上開啟
- 我有虛擬桌面2並即將開啟另一個工作表/文件 Sheet2.xlsx 或 Doc2.xlsx
在這種情況下,它切換到桌面1,因為它已經開啟了 Excel/Word,而我希望它能夠打開桌面2因為我在那裡。當然,我可以將 Sheet2.xlsx / Doc2.xlsx 視窗移至 Desktop 2,但我必須從多工處理手動執行此操作。
我沒有嘗試其他應用程序,但我猜這是相同的行為。
是否有辦法避免這種行為並讓 Windows 開啟目前虛擬桌面中的其他文件/工作表?
答案1
自 MS Office 2013 起,每個 Office 應用程式的視窗都在執行檔的單一實例中執行。當實例開啟新視窗時,任務視圖會先切換到現有應用程式視窗。 (我的另一個抱怨是多個 UNDO 命令在多個視窗中按時間順序回溯,這絕不是我想要的。)
Word 和 Excel
我透過使用命令列選項在單獨的實例中執行每個 Word 和 Excel 視窗解決了 Office 2016 中的問題。對於 Word,選項是/N
;對於 Excel 來說是/X
。它會花費一點額外的啟動時間和一點額外的記憶體。我不會同時運行很多窗口,所以對我來說,減少麻煩是值得的。
對於桌面圖示、自訂工具列和其他快捷方式,您只需編輯屬性並將選項新增至目標命令列即可:
“C:\ Program Files(x86)\ Microsoft Office \ root \ Office16 \ EXCEL.EXE”/ X“C:\ Data \ Weather \ Weather Log.xls”
當您開啟檔案(例如透過雙擊)時套用該選項有點困難。
打開命令視窗以管理員身份執行。
尋找與檔案副檔名關聯的檔案類型:
> 關聯.xls .xls=Excel.Sheet.8
- 尋找用於開啟該文件類型的命令:
> ftype excel.sheet.8 excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" "%1"
- 將該命令替換為包含以下選項的命令:
> ftype excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" excel.sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"
- 對您使用的每個檔案副檔名(例如 .xlsx)重複步驟 2。具有相同文件類型的不需要進一步更改。
您可以透過將所有 Excel ftype 定義捕獲到 .BAT 檔案中,編輯該檔案以ftype
在每行開頭和/X
每個 .EXE 之後添加,以及(對於 .BAT 腳本)更改%1
為來進行大規模更改%%1
> ftype |尋找 /i "office16\excel" > ftypes.bat > [你的文字編輯器] ftypes.bat (進行上述更改)
執行產生的腳本應產生類似以下內容的輸出:
> ftypes.bat > ftype dqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1" dqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1" > ftype Excel.Addin="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Addin="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Backup="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Backup="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Chart=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1" Excel.Chart=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1" > ftype Excel.Chart.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Chart.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.CSV="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.CSV="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Macrosheet="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Macrosheet="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.OpenDocumentSpreadsheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.OpenDocumentSpreadsheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Sheet.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Sheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Sheet.12="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.SLK="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.SLK="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Template="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Template="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Template.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Template.8="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.Workspace="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.Workspace="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excel.XLL="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" Excel.XLL="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1" > ftype Excelhtmlfile="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X Excelhtmlfile="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X > ftype Excelhtmltemplate="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X Excelhtmltemplate="C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE" /X > ftype iqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1" iqyfile=C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /X "%1"
其他辦公室應用程式
某些 Office 應用程式(尤其是 PowerPoint)沒有啟動新實例的選項。但是,以不同使用者身分執行應用程式會建立一個新實例。因此,一種解決方法是為您要同時開啟 PowerPoint 的虛擬桌面建立本機 Windows 使用者。這種方案並不理想,因為在開啟新使用者/實例之前,您必須記住已經執行的使用者/實例。如果你只有幾個,那可能還不錯。
建立每個使用者:
設定 > 帳戶 > 家庭和其他使用者 > [+] 將其他人加入此電腦
- 我沒有此人的登入訊息
- 新增沒有 Microsoft 帳戶的用戶
- 輸入新的使用者名稱、密碼和安全性問題
若要建立以指定使用者身分啟動 PowerPoint 的捷徑,請編輯捷徑的屬性以使用下列命令:
runas /user:user2 /savecred "C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE"
runas
提示輸入使用者密碼。 /savecred
第一次儲存密碼,以後使用已儲存的密碼。您可能希望先建立每個快捷方式運行:普通視窗,然後將其更改為運行:最小化。
這些捷徑可以位於 Windows 桌面上,也可以位於自訂工具列選單中。 PowerPoint 運作後,您可以從那裡開啟 PPT 文件,也可以從文件資源管理器拖曳到文件。如果您長時間處理幾個 PPT 文件,您可以為每個文件建立一個快捷方式,指定以哪個使用者身分執行。
從 PPT 檔案開啟 PowerPoint 實例
不幸的是,將 PPT 檔案拖曳到上述桌面捷徑之一將無法運作,因為runas
需要引用完整的 PowerPoint 命令列。直接開啟PPT檔案的捷徑需要一個中間腳本來整理引號。建立一個腳本,例如“PowerPoint_User.bat」:
:: Usage: PowerPoint_User <username> <PPT filename>
:: Opens a PPT file as a specified user, starting a new PowerPoint instance on
:: the current virtual desktop if that user was not already running PowerPoint.
:: (%~f2 expands %2 to full path with no quotes. See "call /?".)
@echo off
C:\Windows\System32\runas.exe /user:%1 /savecred "POWERPNT.EXE \"%~f2\""
然後使用以下命令為每個使用者建立一個快捷方式:
C:\bin\PowerPoint_User.bat user2
如果該捷徑位於 Windows 桌面上,則可以將 PPT 檔案拖曳到其上。如果您在 中建立快捷方式%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo
,那麼您可以右鍵單擊 PPT 檔案並從“發給「選單。無論哪種情況,請記住每個快捷方式在第一次運行時都會提示輸入密碼。
(如果需要調試快捷方式,請將其設定為運行:普通視窗,加入cmd /k
到命令前面,然後@echo off
從腳本中刪除。
答案2
Excel 使用相同的可執行檔開啟工作表,這就是它切換桌面的原因。解決辦法就是開第二個實例Excel 的:
轉到桌面 2:
- 開啟開始功能表,搜尋Excel
- 按 ALT + 點選 Excel 符號
- 當詢問「是否要啟動新的 Excel 實例?」時,按「是」。
我發現 Excel 在文件資源管理器中開啟時僅使用最新的實例開啟工作表,即使選擇了另一個實例也是如此。
因此,作為解決方法,如果您想稍後在桌面1 上開啟另一個工作表,請轉到該桌面上的實例(開啟一個新工作表,如果已關閉),然後按一下“檔案-> 開啟”以在該桌面上開啟一個新工作表實例。
答案3
答案4
我現在剛剛遇到這個問題,似乎很容易解決。我使用的是 Windows 11。這將打開一個螢幕,顯示所有打開的窗口,並在底部顯示所有桌面。只需將您想要的 Excel 視窗(例如桌面 2)拖曳到桌面 2 上即可。