• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessの値をExcelに縦横入替出力したい)

Accessの値をExcelに縦横入替出力したい

このQ&Aのポイント
  • AccessからデータをExcelVBAでADOを使用して読み込み、縦横を入れ替えたいがrecordcountが-1を返す問題について解決法を教えてください。
  • 質問文章の中で回答を頂いたが、依然としてrecordcountが-1を返し解決できない状況です。
  • 現在は一旦AccessからデータをVBAで読み込み、transpose関数を使用して入れ替えていますが、縦横を入れ替えた状態に出力する方法を知りたいです。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

コード表の参照設定で、ADOにチェックが はいっているのでしょうか。それと、 >今回の質問である、縦横変換出力しない状態でなら >これらを使用し、縦に出力されるはずです。 は確認済みですか? カーソルタイプはadOpenKeysetでいいとは思いますが。

fwod
質問者

お礼

すいません、少し考えれば分かることでした 解決致しました、本当にありがとうございました。

fwod
質問者

補足

回答ありがとうございます、コード表の参照設定にてチェックが入っていなかったのが原因でした。 (縦の出力はチェックを入れる前でも問題なく出力されました) 助かりました、ありがとうございます。 また、よろしければ教えていただきたいのですが この状態で任意のセルから入れ替えした値を出力するには ReDim buf(tmpFldCnt - 1, tmpRecCnt - 1) buf = adoRs.GetRows Range(Cells(1, 1), Cells(tmpFldCnt, tmpRecCnt)) = buf これをどう変更するとよいのでしょうか? いろいろいじってみたものの、自分の望んだ結果にはなりませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

Acceessのフィルはmdbですか、あるいはaccdbですか。 それとバージョンは? 気になるのは、  パス(省略) このパスの使い道と、  Call DBconnect(True) (省略) この関数の存在ですが、これらは間違いなく 使用されたり、機能していますか。

fwod
質問者

お礼

解決しました、ありがとうございました

fwod
質問者

補足

回答ありがとうございます。 Access2007にて、mdeファイルを使用しています。 パス(省略)の部分は -------------------------------------------------------- '宣言 Private adoCn As Object Private adoRs As Object Private strSQL As String Private Const DBpath = "\Access.mde" 'Accessファイルのパス指定 --------------------------------------------------- Call DBconnect(true) (省略) の部分は Sub DBconnect(flg As Boolean) 'DB呼出 Set adoCn = CreateObject("ADODB.Connection") If flg = True Then Set adoRs = CreateObject("ADODB.Recordset") adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBpath & ";" End Sub としています。 今回の質問である、縦横変換出力しない状態でなら これらを使用し、縦に出力されるはずです。

すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

>adoRs.Open strSQLgenyu, adoCn, adOpenKeyset を adoRs.Open strSQLgenyu, adoCn, adOpenStatic, adLockReadOnly としてみたらどうですか。これで取得できますが。

fwod
質問者

お礼

解決しました、ありがとうございました

fwod
質問者

補足

回答ありがとうございます、 そのように実行したところ 実行時エラー'3001': アプリケーション定義またはオブジェクト定義のエラーです。 とでます。 ちなみに定数をadLockReadOnlyにした場合のみこのようなエラーがでます。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ステップ実行してみては? 「レコードセットOPEN直後にレコード数を取得できない」なら OPEN直後に以下2行を追加してからレコード数を取得してみて。 adoRs.MoveLast adoRs.MoveFirst

fwod
質問者

お礼

解決しました、ありがとうございました

fwod
質問者

補足

回答ありがとうございます。 adoRs.Open strSQLgenyu, adoCn, adOpenKeyset 'SQLを実行して、対象をadoRsへ adoRs.MoveLast adoRs.MoveFirst MsgBox (adoRs.RecordCount) このように記述して試してみたところ 実行時エラー'-2147217884(80040e24)': オートメーションエラーです。 と出ました。 windowsupdateも行なっているので、基本的なファイルはそろっていると思うのですが・・・

すると、全ての回答が全文表示されます。

関連するQ&A