2017-07-18 9 views
0

Google検索を少ししてから、フィールド名とデータタイプをリストしているが、テーブル名はリストしていない次のスクリプトをまとめました。私は本当にテーブル名、フィールド名、およびフィールドの種類(一度に1つの行を実行中)をリストしたいと思います。また、ソリューションをハードコーディングするのではなく、SQL Serverを指すADODB接続が多数あるため、接続文字列をループすることをお勧めします。ADODB接続をループしてテーブル名、フィールド名、およびフィールドタイプをリストする方法

これは、[その他のソース]> [SQL Serverから]> [サーバー名]> [次へ]をクリックして設定しました。 。 。 これは、すべての接続文字列を設定する方法です。

Sub DataExtract() 

' Create a connection object. 
Dim cnPubs As ADODB.Connection 
Set cnPubs = New ADODB.Connection 

' Provide the connection string. 
Dim strConn As String 

'Connect to the Pubs database on the local server. 
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=TABLE;Data Source=SERVER" 

'Now open the connection. 
cnPubs.Open strConn 

' Create a recordset object. 
Dim rsPubs As ADODB.Recordset 
Set rsPubs = New ADODB.Recordset 

i = 2 
With rsPubs 
    .ActiveConnection = cnPubs 
    .Open "SELECT * FROM TABLE" 
    For i = 1 To .Fields.Count 
     Sheet1.Cells(i, 2) = .Fields(i - 1).Name 
     Sheet1.Cells(i, 3) = .Fields(i - 1).Type 
    Next i 
End With 

cnPubs.Close 
Set rsPubs = Nothing 
Set cnPubs = Nothing 

End Sub 

私は弱いスクリプトを投稿して助けてくれます。

+0

「openschema」とそれに関連するオプションを見ると、必要なものすべてを実行できます。 –

答えて

0

openschemaとそれに関連するオプションを見ると、必要なものすべてを実行できます。

cnPubs.OpenSchema(adSchemaTables)

cnPubs.OpenScheam(adSchemaColumns)

オプションについては、このリンクを参照してください。

http://www.netbox.cn/document/htm/mdcstschemaenum.htm

0

私は仕事にこれを得ました。

Sub DataExtractFromSQL_Server() 

' Create a connection object. 
Dim cnPubs As ADODB.Connection 
Set cnPubs = New ADODB.Connection 

' Provide the connection string. 
Dim strConn As String 

'Connect to the Pubs database on the local server. 
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=DATABASE_NAME;Data Source=SERVER_NAME" 

'Now open the connection. 
' Create a recordset object. 
Dim rsPubs As ADODB.Recordset 
Set rsPubs = New ADODB.Recordset 


Worksheets(1).Cells.Clear 

Dim sht As Worksheet 
Dim LastRow As Long 

Set sht = ThisWorkbook.Worksheets("Data Validation") 

LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

cnt = ActiveWorkbook.Connections.Count 

For j = cnt To 1 Step -1 

    cnPubs.Open strConn 
    Set conn = ActiveWorkbook.Connections.Item(j) 
    ' conn is the name of the connection string; not the connection string 
    Sql = "SELECT * FROM [TABLE_PREFIX_NAME].[dbo].[" & conn & "]" 
    With rsPubs 

     .ActiveConnection = cnPubs 
     .Open Sql 
     For i = 1 To .Fields.Count 
      Worksheets(1).Cells(LastRow, 1) = conn 
      Worksheets(1).Cells(LastRow, 2) = .Fields(i - 1).Name 

      Select Case DataType 
      Case .Fields(i - 1).Type = "200" 
       Worksheets(1).Cells(LastRow, 3) = "VARCHAR" 
      Case .Fields(i - 1).Type = "131" 
       Worksheets(1).Cells(LastRow, 3) = "DECIMAL" 
      Case .Fields(i - 1).Type = "135" 
       Worksheets(1).Cells(LastRow, 3) = "DATE" 
      Case Else 
       Worksheets(1).Cells(LastRow, 3) = "INT" 
      End Select 

      LastRow = LastRow + 1 
     Next i 
    End With 
    cnPubs.Close 

Next j 

Set rsPubs = Nothing 
Set cnPubs = Nothing 

End Sub 
関連する問題