こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessのクエリをEXCELのVBAを使用して置き換える方法をご教

AccessのクエリをEXCELのVBAを使用して置き換える方法をご教示願います。
AccessデータはE:¥生産管理¥生産.mdbで現状データ内 受注残とゆうクエリ
(受注NO 品番 品名 納期 受注残で並んでいます)を
Office Links→Excelの出力処理にてExcelデータに変換しこのデータを
元データにし品番を縦ならび、納期を横並びにしてどの日付に何個受注が残っているかが
わかるようにVBAで処理するようにしております。
横並びにする理由は資材発注などで結構先の受注を確認して自動計算するためです。
上記のように自動化されていない Office Links→Excelの出力処理をVBAでやる方法が
検索方法が悪いせいかわかりません。
Office Links→Excelの出力処理もしくは
クエリから直接データを引き込む方法をご教授お願いいたします。

投稿日時 - 2010-08-27 17:01:14

QNo.6139657

困ってます

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

Accessのデータベースを単なるデータファイルとして扱い、すべてExcel VBAで処理したければ、ADOのお勉強をなさってください。
http://home.att.ne.jp/zeta/gen/excel/c04p02.htm
ご希望とは制御の方向が逆ですが、Accessからクエリの結果をExcelに貼り付け、Excelを操作する事例を下記のNo.2で回答しております。ご参考まで。
http://okwave.jp/qa/q5137524.html

投稿日時 - 2010-08-27 22:29:37

お礼

参考資料有難うございました。
今回はEXCELのADOを参照設定してデータを取り込むように
することが出来ました。Acccesからの制御は次回TRYしてみます。

投稿日時 - 2010-08-30 12:50:04

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

・エクセル形式でエキスポートします

・VBAなら
 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, "クエリー名", "エクセルのファイル名"

投稿日時 - 2010-08-29 10:42:26

ANo.2

以前作ったものです。
たたき台にして下さい。

Sub Acc2Xls()
'MDBからカレントシートへ転記
  Dim cn As Object
  Dim rs As Object
  Dim strSql As String
  Dim i As Long, j As Long
  
  If Range("A1") = "" Then Exit Sub
  
  Rows("3:3").Select
  Range(Selection, Selection.End(xlDown)).Select
  Selection.ClearContents
  Range("A1").Select

  Set cn = CreateObject("ADODB.Connection")
  Set rs = CreateObject("ADODB.Recordset")

  cn.Open "Driver={Microsoft Access Driver (*.mdb)};" _
    & "DBQ=g:\あれ.mdb;"   'g:\あれ.mdb は適宜変更を
  
  strSql = "select * from それ" _
      & " where これ like '%" & Range("A1").Value & "%'" _
      & " order by ID"  'AccessのSQL文を流用    ↑ADOなのでワイルドカードは%
  rs.Open strSql, cn, 0, 1
  
  For j = 0 To rs.fields.Count - 1
    Cells(2, j + 1) = rs.fields(j).Name
  Next
  
  Application.ScreenUpdating = False
'  Range("A3").CopyFromRecordset rs   'メモ型の文字数制約などが有ったため没
  Do Until rs.EOF
    i = i + 1
    For j = 0 To rs.fields.Count - 1
      Cells(i + 2, j + 1) = rs.fields(j)
    Next
    rs.movenext
  Loop
  Application.ScreenUpdating = True
  
  rs.Close: Set rs = Nothing
  cn.Close: Set cn = Nothing

End Sub

投稿日時 - 2010-08-27 22:04:45

お礼

たたき台資料有難うございました。
色々調べて他4件との合作みたいな感じで
データ読み込むことに成功しました。
又、宜しくお願いいたします。

投稿日時 - 2010-08-30 12:46:50

ANo.1

そのままコピーして貼り付けではできませんでしょうか。

投稿日時 - 2010-08-27 17:03:14

補足

説明が悪くて誠にすみません。
行いたい作業は
クエリ指定→Office Links→Excelの出力処理→指定EXCELデータに貼り付けをEXCEL VBAにて自動処理。
もしくは指定クエリから直接データを引き込むEXCELのVBA処理方法をご教授お願いいたします。
以上説明で伝えられるかと思います。
宜しくお願いいたします。

投稿日時 - 2010-08-27 18:45:35

あなたにオススメの質問