- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access SELECT INTO に関する質問です。
)
Access SELECT INTOに関する質問
このQ&Aのポイント
- Access 2002 VBAで、SELECT INTOで作成したテーブルをそのままTransferSpreadsheetでExcelに吐き出したい
- しかし、TransferSpreadsheetでは任意のソートがされていない状態でExcel出力されてしまう
- TransferSpreadsheetでExcel出力した後、Excel VBAコードを埋め込んで並び替えを行うしかないのか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No2です。 申し訳ありません。前回の質問をよく読みませんでした。 アクセスではレコードの順番がインサートされた順から変わるということはあまり経験したことがありませんが、それが担保されているわけではありません。 テーブル前後に「最適化」をすると、何か変わるかもしれませんが、、、 皆様のご回答のように、 SELECT Xテーブル.* FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号; のようなクエリをつくり、そのクエリをexportの対象にするのが良いと思います。
その他の回答 (2)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
回答No.2
前回の質問で既に回答されている「参照時にクエリで order by 指定しましょう。」というのは、 (SQLビューで見たときに) SELECT Xテーブル.* INTO T_NEW FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号; のようなクエリを作りましょうという意味です。 「デザインビュー」でクエリを作る時は、該当フィールドの「並び替え」のところを「昇順」としてください。
質問者
お礼
早速のご回答、ありがとうございました。
- yamikuri
- ベストアンサー率33% (1/3)
回答No.1
作成したテーブルをソートするクエリーを作成し、TransferSpreadsheetでテーブルを指定しているところをクエリー名にして出力できるかと思います。
質問者
お礼
早速のご回答、ありがとうございました。 やはり、もうワンステップ踏まないといけないのですね。 やってみた結果を、No3の回答に記載します。 割愛で申し訳ありません。
お礼
ご回答、ありがとうございました。 最初、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 大体こんな感じで実現できました。 ありがとうございました。