2015-09-25 33 views
3

我在公共圖書館系統中工作,而Office 2013已經創建了與我們的顧客保存文件有關的問題,並且我試圖簡化該過程。我打算在後臺隱藏所有「保存」選項,並創建一個名爲「Save Here」的自定義選項卡以消除這種混淆。Excel 2013後臺定製問題

我已經將customUI的一些XML拼湊在一起,用於更改後臺視圖,但是,我無法獲得xlsm文件內的VBA代碼的回調以正常工作。我也需要一種方法在Excel啓動時進行這項工作。

我試着把啓用Excel宏的文檔放在XLSTART文件夾中,雖然這使得它在啓動時工作 - 用戶將直接編輯我的工作簿。如果我隱藏視圖以使它們創建一個新頁面,那麼customUI將不起作用。即使使用XLSTART中的文件關閉文檔時也會出現「Microsoft Excel已停止工作..」,因此我需要幫助。

最後,我嘗試在VBA編輯器中將「VBA代碼」放在「本工作簿」中,並且創建一個新模塊並將其放到那裏。如果我把它放在「這個工作簿」中,我會得到一個關於它找不到「SaveAction」宏的錯誤。如果我把它放在模塊中,它就更接近於工作,並帶有上述問題。

區XML

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
    <backstage> 
      <button idMso="FileSave" visible="false"/> 
      <button idMso="FileSaveAs" visible="false"/> 
      <button idMso="FileOpen" visible="true"/> 
      <button idMso="FileClose" visible="true"/> 
      <button idMso="ApplicationOptionsDialog" visible="false"/> 
      <button idMso="FileExit" visible="false"/> 
      <tab idMso="TabInfo" visible="false"/> 
      <tab idMso="TabRecent" visible="false"/> 
      <tab idMso="TabNew" visible="false"/> 
      <tab idMso="TabPrint" visible="true"/> 
      <tab idMso="TabShare" visible="false"/> 
      <tab idMso="TabHelp" visible="false"/> 
      <tab idMso="TabSave" visible="false"/> 
      <tab idMso="TabPublish" visible="false"/> 
      <tab idMso="TabOfficeStart" visible="true"/> 
     <tab id="MyTab" insertAfterMso="TabPrint" label="Save Here" ColumnWidthPercent="30"> 
      <firstColumn>      
      <group id="FirstGroup" label="Save Here" helperText="Click here to Save">   
       <primaryItem>      
        <button id="BigButton" label="Patron Save Location" isDefinitive="true" onAction="SaveAction"/>     
       </primaryItem>      
      </group>       
      </firstColumn> 
     </tab> 
    </backstage> 
    </customUI> 

EXCEL-VBA

Sub SaveAction(control As IRibbonControl) 
     'Saves any changes to the workbook. 
     ActiveWorkbook.SaveAs 
    End Sub 

RE:

的什麼,我試圖完成說明:以下後,大衛的解決方案的評論。當我們的顧客使用Office 2013並進入文件菜單時,這將啓動Office Backstage - 包含一長串選項。由於他們不熟悉任何版本的Office,因此我們很多用戶都對此感到困惑。您可以禁用應用程序選項中的後臺,但這不會禁用文件>另存爲下的選項。諸如Skydrive之類的選項 - 我知道,可以刪除,但計算機和添加一個地方仍然存在。我試圖通過給他們一個選擇讓它儘可能簡單,以便工作人員不必花很多時間來回答關於在哪裏保存文檔的問題。這被解釋了,你的最終評論完成了我的任務,從而回答了我的問題,所以我正在標記答案,但不介意聽到其他更好的方法來貶低後臺。

+0

嘿感謝關於你想要解決的問題的評論!我認爲目前的做法應該爲此工作。當我第一次讀到你的Q時,我認爲你試圖限制或控制用戶將文件保存到特定位置的能力,但是如果你只是試圖「後退」後臺視圖,那麼這是一種好方法做到這一點。乾杯。 –

回答

1

您的XML存在錯誤,應該是:columnWidthPercent而不是ColumnWidthPercent

我還需要一種方法來使Excel在啓動時工作。

將功能區代碼放入XLAM加載項文件並配置計算機,以便將此加載項加載到Excel應用程序。

將VBA回調放入標準代碼模塊中。

例子:

https://drive.google.com/file/d/0B1v0s8ldwHRYMUNWZFlFdVExYjg/view?usp=sharing

RE:評論

你要修改喜歡你的程序:

Sub SaveAction(control As IRibbonControl) 
    Dim fdlg 
    Set fdlg = Application.FileDialog(msoFileDialogSaveAs) 
    fdlg.Show 
    fdlg.Execute 
End Sub 

您可能需要這進一步修改錯誤處理。

注意

此解決方案假定用戶將無法更改安裝在計算機上加載項,也不卸載現有的加載項等,爲加入一些

+0

add ins可以對新創建的文檔以及打開自己的文檔的操作執行操作,只要圖書館計算機上存在加載項即可。此外,我上面列出的VBA代碼默認爲保存,而不是保存,當我運行它時,有沒有錯? – Slowcoder

+0

是的,只要添加內容存在並安裝,它就可以在計算機上打開的任何Excel文檔上運行。關於save/saveAs,我不知道是否存在問題:我假設你試圖阻止他們保存到其他位置,並且發表評論以防萬一你試圖阻止他們做某些save/saveAs。 –

+0

好的。我把你在XLStart中提供的xlam文件,它似乎工作,除非你實際上單擊在後臺創建的按鈕,它將當前工作簿保存爲book1.xls,並且不給它們一個命名文件的選項,作爲SaveAs應該。有什麼辦法可以提示用戶命名文件,而不是保存爲book1.xls嗎? – Slowcoder