Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2843 / 9994 ←次へ | 前へ→

【10418】Re:AccessVBAとExcelVBAの連携について教えてください
回答  小僧  - 08/6/17(火) 11:39 -

引用なし
パスワード
   ▼lily さん:
こんにちは。

> ExcelのVBAでAccessの既存テーブルにデータをインポートし、
> さらにイベントプロシージャをExcelから直接実行し
> 最終的に作成したクエリをExcelの既存ファイルにエクスポートしたい

Excelでもからも SQL 文は発行できるので、
あえて Access を使わなくてもいけそうな気がします。

また、オブジェクトの作成・削除を繰り返すような動作は
不安定になりがちなので気をつけましょう。

以下、Excelだけで処理を済ます例です。

Sub DataExport2()
'要参照 Microsoft DAO x.x Object Library
Const InXls = "C:\Data.xls"  '元データのExcel
Const OutXls = "C:\Out.xls"  '出力先のExcel

Dim WS As DAO.Workspace
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
Dim i As Long

  Set WS = DBEngine.Workspaces(0)
  Set DB = WS.OpenDatabase(InXls, False, False, "EXCEL 8.0;HDR=YES;")

  'データが Sheet1にある場合
  strSQL = "SELECT sechi1, tranzak " _
      & "FROM [Sheet1$] " _
      & "WHERE sechi1 IN (" _
      & "         SELECT sechi1 " _
      & "         FROM [Sheet1$] " _
      & "         GROUP BY sechi1 " _
      & "         HAVING Count(sechi1) > 1)"
     
  
  Set RS = DB.OpenRecordset(strSQL, dbOpenSnapshot)

'吐き出し先のExcelが既にある場合は削除
  On Error Resume Next
    Kill OutXls
  On Error GoTo 0

  With Workbooks.Add
  
  'ヘッダ行の出力
    For i = 1 To RS.Fields.Count
      .Sheets("Sheet1").Cells(1, i).Value = RS.Fields(i - 1).Name
    Next i
  
  'データの出力
    .Sheets("Sheet1").Range("A2").CopyFromRecordset RS
    .SaveAs OutXls
    .Close
  End With
    
  
  RS.Close: Set RS = Nothing
  DB.Close: Set DB = Nothing
  WS.Close: Set WS = Nothing

  MsgBox "終了!"

End Sub


こんな感じでいかがでしょうか。

1,068 hits

【10417】AccessVBAとExcelVBAの連携について教えてください lily 08/6/13(金) 17:16 質問[未読]
【10418】Re:AccessVBAとExcelVBAの連携について教え... 小僧 08/6/17(火) 11:39 回答[未読]
【10420】Re:AccessVBAとExcelVBAの連携について教え... lily 08/6/18(水) 12:58 質問[未読]
【10431】Re:AccessVBAとExcelVBAの連携について教え... lily 08/6/20(金) 13:25 お礼[未読]
【10433】Re:AccessVBAとExcelVBAの連携について教え... 小僧 08/6/24(火) 10:07 回答[未読]

2843 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078200
(SS)C-BOARD v3.8 is Free