0

Excel 2007 ではクエリがテーブルに自動的に作成されますが、2003 では単なるデータ セットです。私のコードはデータを並べ替えており、テーブルとテーブルにないデータを並べ替えるには2つの異なる方法が使用され、交換できません。交換可能なもの、または新しいバージョンの Excel でデータ クエリをテーブルに変換しないようにする方法を探しています。

そこから機能させるために、特別な値を別のシートにのみコピーペーストすることを考えています。それが効率的ではないかどうか、そしてより良い方法があるかどうか疑問に思っています。

4

1 に答える 1

1

データをテーブルにプルしたら、次のようなコマンドを実行します

ActiveSheet.ListObjects("Table_DatabaseName").Unlist

操作可能な範囲に変換する必要があります。ここで、Table_DatabaseName はオブジェクトの .DisplayName です (VBA を介してデータを取得すると仮定します)。または、リボンの [デザイン] タブで [範囲に変換] をクリックすることもできます。

別の方法として、データをレコードセットにプルし、.CopyFromRecordset を使用してデータを挿入することもできます。

レコードセットの例を追加するために編集

Sub PullDataTest()

Dim cnn As Object
Dim cmd As Object
Dim rs As Object

Set cnn = CreateObject("ADODB.Connection")
cnn.connectiontimeout = 0
strConn = ' You can just copy the connection string from your Connections. 
           ' Don't forget to escape the quotes: 
            'eg [Property]="" becomes [Property]=""""
cnn.Open strConn

Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cnn
cmd.CommandType = 1
cmd.CommandText = "SELECT * FROM tbl_Db_Main"

Set rs = CreateObject("ADODB.Recordset")

With rs
    .Open Source:=cmd.Execute
    ActiveSheet.Range("A1").CopyFromRecordset rs
    .Close
End With

Set cnn = Nothing
Set cmd = Nothing
Set rs = Nothing

End Sub
于 2013-11-05T01:59:18.600 に答える