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

解決済みの質問

EXCELのVBAでACCESSにアクセスすると「My Documen

EXCELのVBAでACCESSにアクセスすると「My Documents」フォルダに.odcファイルが多数生成される。

(1)ACCESS(業務DB.mdb)にあるAテーブルのデータをEXCELのシートに取り込みたいために、EXCELで「外部データの取り込み」から業務DB.mdbのAテーブルとリンクしています。

(2)EXCELをオープン時に自動で業務DB.mdbのAテーブルのデータを更新させたいため、以下のVBAで更新処理をしています。
 ----------------------------------------------
With Selection.QueryTable
.Connection = Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & ThisWorkbook.Path & "\業務DB.mdb;" _
, _
"Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=5;Jet OLEDB:" _
, _
"Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password" _
, _
"="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLE" _
, "DB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False")
.CommandType = xlCmdTable
.CommandText = Array(シート.Name)
.Refresh BackgroundQuery:=False
End With
 ----------------------------------------------

(3)上記(2)を実行するたびに「My Documents」の下にある「My Data Sources」フォルダに業務DB.odcファイルが生成されます。
 具体的には、処理1回目で「業務DB.odc」が生成され、2回目で「業務DB(1).odc」、3回目で「業務DB(3).odc」というように.odcファイルが処理毎に生成されてしまいます。


この.odcファイルを処理毎に生成されるのを防ぎたいのですが、手法がわかりません。
.odcファイルは1ファイルだけで十分です。

ご存知の方、ご教授宜しくお願い致します。m(_ _)m

投稿日時 - 2010-03-27 06:38:36

QNo.5782412

すぐに回答ほしいです

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

Accessのバージョンによって、バッチを当てないと
様々な症状を引き起こすことが、質問のなかで出ています。
同じファイルを同じ設定で同じ機種のPCで稼動させたところ
たった一台だけがエラーを起こし、その原因がどうしても
つかめない、というものがいくつかありました。その
いくつかは最新のバッチを当てて改善した、あるいは
そのPCだけバッチを当てていなかったというものでした。
そのあたりはどうでしょうか。

投稿日時 - 2010-03-29 23:28:54

お礼

お礼遅くなり申し訳ございません。
結局、真の原因はつかめず、piroin654さんからご教授頂きましたファイルを削除する方法で回避することになりました。
仕事の案件だったので助かります。
有難うございました。

投稿日時 - 2010-04-02 20:03:08

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

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

回答(3)

ANo.2

訂正です。
>buf = Dir("C:\マイドキュメント\業務DB.odc")
となっていますが、
strPATH = Dir("C:\マイドキュメント\業務DB.odc")
としてください。変数の設定が違っていました。

投稿日時 - 2010-03-29 00:50:13

補足

ご返答有難うございます。

.odcファイルが多数生成される件ですが、他のACCESSでは1つの.odcファイルしか生成されません。
使用勝手は同様で、処理する日付をフォルダ名として、DBがあるフォルダをまるごとコピーして使っています。VBAも同じロジックです。

ご教示頂いたファイル削除方法も選択肢にさせて頂きたいと思いますが、他にACCESSの設定などで回避できる方法はありませんでしょうか?

自分自身、なぜ他のACCESSが正常に動作していて、このACCESSだけが複数の.odcファイルが生成されるかわかりません。

投稿日時 - 2010-03-29 21:53:10

お礼

有難うございます。

投稿日時 - 2010-06-09 16:57:15

ANo.1

状況がよくわかりませんが、ファイルの存在を
確認し、あれば削除して接続、なければそのまま
接続、ということで、Dir関数、あるいは
FileSystemObjectを使用する二つの方法があります。
Dir関数の場合、ファイルがすぐ削除されるか
どうかわからないので、確認しながら試して
みてください。動作確認はしていませんが、
使えるようだったらどうぞ。

(1)
Sub Test1()
Dim strPATH As String
buf = Dir("C:\マイドキュメント\業務DB.odc")
If strPATH = "" Then
MsgBox ("ファイルはありません")
'接続開始の関数を呼ぶ
Else
Kill strPATH
'接続開始の関数を呼ぶ
End If
End Sub

(2)
Sub Test2()
  Dim fsObj As Object
Dim strFilePath As String
  Set fsObj = CreateObject("Scripting.FileSystemObject")

strFilePath = "C:\マイドキュメント\業務DB.odc"
  If fsObj.FileExists sTrFilePath Then
fsObj.FileDelete strFilePath
'接続開始の関数を呼ぶ
Else
MsgBox("ファイルはありません")
'接続開始の関数を呼ぶ
End If

Set fsObj = Nothing
End Sub

投稿日時 - 2010-03-27 22:40:09

お礼

有難うございます。
参考にさせて頂きます。

投稿日時 - 2010-06-09 16:57:43

あなたにオススメの質問