2014-07-16 110 views
0

現在我有一個excel電子表格,其中包含一個按鈕,指派給我從SQL服務器提取數據的宏。現在它只能拉我告訴它的整個桌子。從VBA調用excel公式

我正在做這件事的人希望它走的更遠,以便他們可以在單元格B1中輸入SQL命令,並且當按下按鈕時,它將運行包含在單元格b1中的語句。因此,並非只能夠運行宏中包含的語句並從SQL服務器反覆提取同一個表,該按鈕將能夠運行單元格B1中包含的任何語句,從而使宏容易更改。

例如:現在宏從僱員表中提取所有信息(select * from employees),但是我想將該語句更改爲類似於(調用單元格B1)的內容,然後它將運行單元格B1內的任何內容無需進入VBA即可輕鬆更改。

+1

如果您的最終用戶知道sql,爲什麼不直接給他/她的SQL管理工作室? Excel似乎是一個糟糕的SQL語句庫。如果你在數據庫中保存了SQL語句並且只是'EXEC''d他們呢? – paqogomez

+0

用戶專門只想使用前端sql。不要問我爲什麼。有很多其他更簡單的方法可以將數據從sql抓取到excel中,但是我只是按照我的指定進行操作。 –

回答

2

我會一個電話到一個公共功能,你現在所擁有的SQL命令,我將annote作爲

Private Sub CommandButton1_Click() 
'dim some objects and file paths, ect 
With *some database* 
    DoCmd.RunSQL "SELECT * FROM Employees" 
End With 
End Sub 

以下

Private Sub CommandButton1_Click() 
'dim objects and file paths again 
With *some database* 
    DoCmd.RunSQL(SQLSetup) 
End with 
End Sub 

Public Function SQLSetup() as String 
SQLSetup = Application.ThisWorkBook.Cells(X,Y).Value 
End Sub 

當然的地方,有很多方法可以改善這一點。您可以將SQL語句的每個元素分解爲一個新單元格,並將這些單元格值在函數中一起使用。但是,只要訪問單元格中的值並將其傳遞到可以放入SQL語句中的變量中,就可以粗略地估計出您需要的值。

+1

我在寫完全相同的文字時只有一半的時間,只是不太好。 – RowanC

+0

Cronos2546;我有一些代碼,我希望你看看你是否有時間。我試圖實現你的一些例子,但沒有任何運氣。鏈接如下: http://stackoverflow.com/questions/24767306/vba-code-cannot-connect-to-sql-server-2008/24768462?noredirect=1#comment38458629_24768462 –

+0

沒關係!得到它的工作。 。開放範圍(「B1」)。公式取得了訣竅;) –