• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access SELECT INTO に関する質問です。 )

Access SELECT INTOに関する質問

このQ&Aのポイント
  • Access 2002 VBAで、SELECT INTOで作成したテーブルをそのままTransferSpreadsheetでExcelに吐き出したい
  • しかし、TransferSpreadsheetでは任意のソートがされていない状態でExcel出力されてしまう
  • TransferSpreadsheetでExcel出力した後、Excel VBAコードを埋め込んで並び替えを行うしかないのか

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

No2です。 申し訳ありません。前回の質問をよく読みませんでした。 アクセスではレコードの順番がインサートされた順から変わるということはあまり経験したことがありませんが、それが担保されているわけではありません。 テーブル前後に「最適化」をすると、何か変わるかもしれませんが、、、 皆様のご回答のように、 SELECT Xテーブル.* FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号; のようなクエリをつくり、そのクエリをexportの対象にするのが良いと思います。   

2time4date
質問者

お礼

ご回答、ありがとうございました。 最初、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 大体こんな感じで実現できました。 ありがとうございました。

その他の回答 (2)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

前回の質問で既に回答されている「参照時にクエリで order by 指定しましょう。」というのは、 (SQLビューで見たときに) SELECT Xテーブル.* INTO T_NEW FROM Xテーブル 0RDER BY XテーブルXテーブル.品コード, Xテーブル.明細番号; のようなクエリを作りましょうという意味です。 「デザインビュー」でクエリを作る時は、該当フィールドの「並び替え」のところを「昇順」としてください。

2time4date
質問者

お礼

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

  • yamikuri
  • ベストアンサー率33% (1/3)
回答No.1

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

2time4date
質問者

お礼

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

関連するQ&A