プロが教える店舗&オフィスのセキュリティ対策術

Access SELECT INTO に関する質問です。

いつもお世話になっております。

Access 2002 VBAなのですが、
http://oshiete.goo.ne.jp/qa/4994969.html
の内容にちなんだご質問です。

VBAで、SELECT INTO で作成したテーブルを
そのままTransferSpreadsheetでExcelに吐き出したいと思っております。

しかし、TransferSpreadsheetでは引数にテーブル名しか指定できないため、
任意のソートがされていない状態でExcel出力されてしまいます。

なにか、任意のソートをした状態でExcel出力できる方法はありますか?
TransferSpreadsheetでExcel出力した後、
Excel VBAコードを埋め込んで、Excelで並び替えを行うしかないのでしょうか?

よろしくお願いいたします。

A 回答 (3件)

No2です。

 申し訳ありません。前回の質問をよく読みませんでした。

アクセスではレコードの順番がインサートされた順から変わるということはあまり経験したことがありませんが、それが担保されているわけではありません。 テーブル前後に「最適化」をすると、何か変わるかもしれませんが、、、
皆様のご回答のように、

SELECT Xテーブル.* FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号;

のようなクエリをつくり、そのクエリをexportの対象にするのが良いと思います。




  
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

最初、VBAでソートしなおしたクエリを作成しても、
ソートされていなかったのですが、
ご回答のSQL文を参考に、ORDER BY 句のフィールド名にテーブルを指定したら、
クエリはソートされていました。

実現方法は、
Dim QDB As DAO.Database 'クエリ作成用
Dim QDF As DAO.QueryDef 'クエリ作成用

str_CreateTblSQL = "SELECT * INTO " & str_CreateTblName & " FROM " & str_MainTblName & "
WHERE KEY_NAME = '" & str_KeyName & "' "
DoCmd.RunSQL (str_CreateTblSQL)

'上で作成したワークテーブルを、ソートしなおしたクエリを作成
str_QuerySQL = "SELECT * FROM " & str_CreateTblName & " ORDER BY " & str_CreateTblName & ".ELCODE ASC"
Set QDB = CurrentDb
Set QDF = QDB.CreateQueryDef(str_CreateQueryName, str_QuerySQL)

'エクセルに出力
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, str_CreateQueryName, str_OutputPath, True

大体こんな感じで実現できました。
ありがとうございました。

お礼日時:2010/01/18 11:18

前回の質問で既に回答されている「参照時にクエリで order by 指定しましょう。

」というのは、
(SQLビューで見たときに)

SELECT Xテーブル.* INTO T_NEW FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号;

のようなクエリを作りましょうという意味です。

「デザインビュー」でクエリを作る時は、該当フィールドの「並び替え」のところを「昇順」としてください。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。

お礼日時:2010/03/04 15:09

作成したテーブルをソートするクエリーを作成し、TransferSpreadsheetでテーブルを指定しているところをクエリー名にして出力できるかと思います。

    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。
やはり、もうワンステップ踏まないといけないのですね。
やってみた結果を、No3の回答に記載します。
割愛で申し訳ありません。

お礼日時:2010/01/18 11:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す