2017-01-18 4 views
0

複数のセルとシートから入力を取得してクエリを作成し、そのクエリを接続に使用するモジュールを作成します。Excelモジュール - テーブル接続のための入力として複数のセルを取得

異なるExcelファイルで使用されているピボットテーブルに対して同じジョブを実行するモジュールをコピーしましたが、通常のテーブルで作業したいと考えています。

概要Excelファイル:フィルタリングするために使用する必要がある名前のリストと

シート「設定」。

シート「すべてのインシデント2014」には、接続があり、新しいクエリで更新する必要があるテーブルがあります。

WHEREステートメントなしで使用したいクエリを持つシート "SQL"。また、接続文字列がここに置かれています。

ピボットテーブルの場合はピボットテーブルを使用するのが普通ですが、今回はテーブルです。私は、これをテーブルで動作させるために何を使用しなければならないかを知りたいと思います。

Set tab_I = ActiveWorkbook.Worksheets("All Incidents 2014").Range("A1").TableObject 

Module: 
-------------------------------------- 

Function Update_2014() 

'----------------------------------------------------------------- 

Dim in_sql As String 

Dim sql_I1 As String 

Dim tab_I As TableObject 

Dim connection As String 

'----------------------------------------------------------------- 

in_sql = "" 

sql_I1 = ActiveWorkbook.Worksheets("SQL").Range("A1").Value 

Set tab_I = ActiveWorkbook.Worksheets("All Incidents 2014").Range("A1").PivotTable 

connection = ActiveWorkbook.Worksheets("SQL").Range("B1") 

'----------------------------------------------------------------- 

For Each s In ActiveWorkbook.Worksheets("Settings").Range("C5:C500") 

If s.Value = "" Then 
    in_sql = in_sql 
    Else 
     in_sql = in_sql & "'%" & s.Value & "%'," '& vbCrLf 
End If 

Next s 
    in_sql = Left(in_sql, Len(in_sql) - 1) 

'----------------------------------------------------------------- 

tab_I.PivotCache.connection = "OLEDB;" 

sql_I1 = sql_I1 & ", table (sys.odcivarchar2list (" & in_sql & ")) Where SERVICE like column_value" 

tab_I.PivotCache.CommandText = sql_I1 

tab_I.PivotCache.connection = connection 

'----------------------------------------------------------------- 

tab_I.Refresh 

End Function 

答えて

0

多くのソリューションをテストしましたが、実際の解決策はありませんでした。ピボットテーブルを表形式に変更してテーブルとして使用しました。

次のモジュールは、私の仕事:

Function Update_2017() 
'------------------------------------------------------------------------------------------------------------ 
Dim time_I As String 
Dim boundary As String 
Dim ExclMonth As String 
Dim pt_I As PivotTable 
Dim sql_I1 As String 
Dim sql_I2 As String 
Dim connection As String 
Dim in_sql As String 
'------------------------------------------------------------------------------------------------------------ 
in_sql = "" 
boundary = ActiveWorkbook.Worksheets("Settings").Range("F5").Value 
sql_I1 = ActiveWorkbook.Worksheets("SQL").Range("B3").Value 
sql_I2 = ActiveWorkbook.Worksheets("SQL").Range("B4").Value 
Set pt_I = ActiveWorkbook.Worksheets("PivotBase 2017").Range("B3").PivotTable 
connection = ActiveWorkbook.Worksheets("SQL").Range("B2").Value 
'ExclMonth = ActiveWorkbook.Worksheets("Settings").Range("B11").Value 
'ExclMonth = Left(ExclMonth, 6) & Right(ExclMonth, 1) + 1 
'------------------------------------------------------------------------------------------------------------ 
For Each s In ActiveWorkbook.Worksheets("Settings").Range("C4:C500") 
If s.Value = "" Then 
    in_sql = in_sql 
    Else 
     in_sql = in_sql & "'%" & s.Value & "%'," '& vbCrLf 
End If 

Next s 
    in_sql = Left(in_sql, Len(in_sql) - 1) 
'------------------------------------------------------------------------------------------------------------ 
'Change connection type to OLEDB to edit sql, assemble sql, overwrite sql, reassign old connection (changing the command text in ODBC triggers refresh, in OLEDB no refresh triggered) 
pt_I.PivotCache.connection = "OLEDB;" 
sql_I1 = sql_I1 & boundary & sql_I2 & ", table (sys.odcivarchar2list (" & in_sql & ")) Where SERVICE like column_value" 
pt_I.PivotCache.CommandText = sql_I1 
pt_I.PivotCache.connection = connection 

'------------------------------------------------------------------------------------------------------------ 
'Update pivot cache 
pt_I.PivotCache.Refresh 

End Function 
関連する問題