2015-09-07 55 views
0

每當我更改打開的工作簿的窗口並返回到MyFile.xlsb,我定義了外部連接時,MyFile.xlsb中的所有數據透視表的刷新都會自動運行。不用添加它是非常煩人的功能。如何禁用它?如何僅在需求時運行刷新。重要的提示。此問題僅在分發MyFile.xlsb的用戶的計算機上發生。在我的電腦上,它工作正常。如何在Excel自動刷新連接中禁用調用SQL存儲過程?

我已將外部連接定義爲參考存儲過程在SQL中。

Usage

Definition

連接字符串:

Provider=SQLOLEDB.1; 
Integrated Security=SSPI; 
Persist Security Info=True; 
Initial Catalog=MyDataBase; 
Data Source=MyServerName; 
Use Procedure for Prepare=1; 
Auto Translate=True; 
Packet Size=4096; 
Workstation ID=MyWorkstationID; 
Use Encryption for Data=False; 
Tag with column collation when possible=False 

這裏是SQL存儲過程我叫。

CREATE PROCEDURE [dbo].[MyProcedure] 
AS 
BEGIN 

-- part one, show user what he has to see 
SELECT * 
FROM [dbo].[MyView] 
ORDER BY 1 

-- part two, get user data 
INSERT INTO dbo.My_other_table_logins_history 
SELECT 
GETDATE(), 
ORIGINAL_LOGIN() 
END 

使用此過程的概念,在這裏解釋: SQL procedure from Excel run from connection properties with user login as parameter

+0

檢查,看是否存在工作簿中的宏刷新所有。 – rwking

+0

@rwking沒有沒有。我禁用了所有事件。我也取消選中使用窗格中的所有內容。 –

+0

您是否檢查過用戶計算機上的Excel設置? –

回答

1

嘗試運行此:

Option Explicit 

Public Sub disableAutoRefreshConnection() 
    Dim cnn As WorkbookConnection 

    For Each cnn In ActiveWorkbook.Connections 
     With cnn.OLEDBConnection 
      .BackgroundQuery = False 
      If .Refreshing Then .CancelRefresh 
      .EnableRefresh = False 
      .RefreshOnFileOpen = False 
      .RefreshPeriod = 0 
     End With 
    Next 
End Sub 

BackgroundQuery Default: True;  If queries are asynchronous 

CancelRefresh       Cancels refresh operations in progress 

EnableRefresh  Default: True;  If connection can be refreshed by the user 

RefreshOnFileOpen Default: False; If it auto-updates each time workbook is opened 

RefreshPeriod  Default: 0;  Number of minutes between refreshes 
+1

它的工作原理。我認爲你的代碼的關鍵是'.EnableRefresh = False'爲什麼刷新過程自動運行的任何想法? –

+0

我需要複製你的設置和監視設置,看它什麼時候打開,所以我會做一些測試,但在此期間,你可以禁用每一行,當時一個確認你提到的那一行。您也可以將其更改爲僅對「MyServerName」起作用,而不是循環遍歷所有現有連接(如果您擁有的連接數不止一個) –

+0

我重複了您的設置並使用了其他連接,但我無法看到問題(我用了一個小分貝)。我的猜測是,其中一個設置已從默認值更改 - 我添加了更多的信息作爲參考的答案 –