Excel VBA質問箱 IV

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

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


3246 / 13644 ツリー ←次へ | 前へ→

【63302】テーブルのEXPORT 孫悟空 09/10/25(日) 10:01 質問[未読]
【63303】Re:テーブルのEXPORT りおりお 09/10/25(日) 13:52 発言[未読]
【63304】Re:テーブルのEXPORT 孫悟空 09/10/25(日) 15:28 お礼[未読]
【63310】Re:テーブルのEXPORT Yuki 09/10/25(日) 17:03 発言[未読]
【63311】Re:テーブルのEXPORT 孫悟空 09/10/25(日) 17:43 お礼[未読]
【63308】Re:テーブルのEXPORT かみちゃん 09/10/25(日) 16:53 発言[未読]
【63312】Re:テーブルのEXPORT 孫悟空 09/10/25(日) 17:51 お礼[未読]

【63302】テーブルのEXPORT
質問  孫悟空  - 09/10/25(日) 10:01 -

引用なし
パスワード
   --------------------------------------------------------------------------------
 
引用なし  

パスワード


   管理人さん、皆様、はじめまして。
エクセルVBAの初〜中級者?です。
アクセステーブルのエキスポートがうまく出来ずに困っています。

【やりたいこと】
同じディレクトリ内のデータベースdb1.mdb 内の table1を 同じディレクトリ内のデータベースdb2.mdbへtable1の名前でエキスポートしたいのです。
下記のようなコードでは、
エラー(オブジェクト'table1'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。)が出ます。

【コード】
Sub Error_Sample()
  Dim AcApp, AcImport, AcTable, AcExport, acexit As Object
  
  'アクセスの起動
  Set AcApp = CreateObject("Access.Application.9")
  'アクセスの可視化
  AcApp.Visible = True
  '同じパス内のdb1アクセスを開く
  AcApp.Opencurrentdatabase ThisWorkbook.Path & "\db1.mdb"
  'db1のtable1をDB1にインポート(ここでエラー)
  AcApp.DoCmd.TransferDatabase AcExport, "Microsoft Access", ThisWorkbook.Path & "\db2.mdb", AcTable, "Table1", "Table1"
  'MDBファイルを閉じます
  AcApp.CloseCurrentDatabase
  '解放
  Set AcApp = Nothing
End Sub

【環境】
WindowsXP,Office2000です。

よろしくお願いいたします。

【63303】Re:テーブルのEXPORT
発言  りおりお  - 09/10/25(日) 13:52 -

引用なし
パスワード
   引数として使われている
> AcTable  AcExport
などを最初に変数宣言してしまっているため混乱しているのではないでしょうか?

質問文からは
Dim AcApp As Object
だけで実行したら動きました。
⇒Excel2002でパスは修正しました。

【63304】Re:テーブルのEXPORT
お礼  孫悟空  - 09/10/25(日) 15:28 -

引用なし
パスワード
   りおりお さんへ
お返事ありがとうございました。

>質問文からは
>Dim AcApp As Object
>だけで実行したら動きました。
>⇒Excel2002でパスは修正しました。

私もdim文から外してから試みましたが、ダメでした。
ちなみに、インポートは正常にできるんですが。
変ですね。

【63308】Re:テーブルのEXPORT
発言  かみちゃん  - 09/10/25(日) 16:53 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>同じディレクトリ内のデータベースdb1.mdb 内の table1を 同じディレクトリ内のデータベースdb2.mdbへtable1の名前でエキスポートしたい

私は、よく似たことを以下のような感じでしています。

Sub Sample1()
 Dim dbCon As ADODB.Connection    ' MDB
 Dim dbRes As ADODB.Recordset    ' MDB
 Dim strMDBFileName1 As String
 Dim strMDBFileName2 As String
 Dim strSQL As String

 strMDBFileName1 = ThisWorkbook.Path & "\db1.mdb" 'エクスポート元MDB
 strMDBFileName2 = ThisWorkbook.Path & "\db2.mdb" 'エクスポート先MDB
 
 Set dbCon = New ADODB.Connection
 'エクスポート元MDBを開く
 dbCon.Open cnsConnect1 & strMDBFileName1 & ";"

 'テーブル作成のSQL文の生成
 strSQL = ""
 strSQL = strSQL & " SELECT *"
 strSQL = strSQL & " INTO [;Database=" & strMDBFileName2 & "].[Table1]" 'エクスポート先
 strSQL = strSQL & " FROM Table1" 'エクスポート元
 
 'エクスポート先MDBへ(テーブル作成クエリ)
 dbCon.Execute strSQL
 
 dbCon.Close
 Set dbCon = Nothing
  
 MsgBox "エクスポートしました"
End Sub

インデックス等は、考慮していません。

【63310】Re:テーブルのEXPORT
発言  Yuki  - 09/10/25(日) 17:03 -

引用なし
パスワード
   ▼孫悟空 さん:
>私もdim文から外してから試みましたが、ダメでした。

外さずに型指定をチャンとしましょう。
参照設定をしてあるなら
acExport,acTableを使用してもOKです。 
又下記のように型指定をしてもよいですね。
'Dim acApp As Access.Application
'Set acApp = New Access.Application

エラーの内容からだとMDBファイルがthisworkbookの
ディレクトリにあるか確認してみましょう。
これで動くと思います。

Sub tblExport()
  Dim acApp As Object
  Set acApp = CreateObject("Access.Application.9")
  acApp.OpenCurrentDatabase ThisWorkbook.Path & "\db1.mdb"
  acApp.DoCmd.TransferDatabase 1, "Microsoft Access", _
        ThisWorkbook.Path & "\db2.mdb", 0, "T_Add1", "T_Add1"
  acApp.CloseCurrentDatabase
End Sub

【63311】Re:テーブルのEXPORT
お礼  孫悟空  - 09/10/25(日) 17:43 -

引用なし
パスワード
   ▼Yuki さん:
>外さずに型指定をチャンとしましょう。
ですね。
いつもは option explicitを欠かさず記入しています。

>参照設定をしてあるなら
>acExport,acTableを使用してもOKです。
参照設定確認しました。
恥ずかしながらAccess Applicationへの参照設定ができていませんでした。
 
>又下記のように型指定をしてもよいですね。
>'Dim acApp As Access.Application
>'Set acApp = New Access.Application
なるほど・・・後でよく調べます。
反省と共にすっきりです。

>これで動くと思います。
>Sub tblExport()
>  Dim acApp As Object
>  Set acApp = CreateObject("Access.Application.9")
>  acApp.OpenCurrentDatabase ThisWorkbook.Path & "\db1.mdb"
>  acApp.DoCmd.TransferDatabase 1, "Microsoft Access", _
>        ThisWorkbook.Path & "\db2.mdb", 0, "T_Add1", "T_Add1"
>  acApp.CloseCurrentDatabase
>End Sub
見事に動きました。
ちなみに参照設定をしたら、小生のプログラムでも動きました。

Yuki さんありがとうございました。

【63312】Re:テーブルのEXPORT
お礼  孫悟空  - 09/10/25(日) 17:51 -

引用なし
パスワード
   ▼かみちゃん さん:
ADO+SQLですね。
普段、私はADO+SQLです。

 実は、異なるデーターベース間ではやりとりが無理かと思っていました。
とても参考になりました。
ありがとうございます。

 これでも解決しますね。
いろいろ迷ってしまう程、嬉しいです。
ここは知恵の泉!!ですね。

かみちゃん さん・・&管理人さん含め皆さん有り難うございました。

3246 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free