2016-05-16 37 views
3

特定のルートパスから開始してフォルダー構造を通過するアプリケーションを構築するプロセスを開始しており、検出されたすべてのAccess 1997 .mdbファイル新しいAccess 2007/2010 .accdb形式に変換します。しかし、私は実際のファイル変換を行うときにいくつかの問題に遭遇しています。プログラムでAccess 1997 .mdbをAccess 2007に変換する方法.accdb

私はMicrosoftのAccess Interop API(https://msdn.microsoft.com/en-us/library/office/ff193465.aspx)を使用して変換を処理しているため、これはVBScriptで記述する必要があります。スクリプトは以下の通りです:実行すると

Dim app 
Set app = CreateObject("Access.Application") 
app.ConvertAccessProject "C:\Users\[User]\Access Conversion Utility\sample.mdb", "C:\Users\[User]\Access Conversion Utility\converted.accdb", acFileFormatAccess12 

、私はエラーを取得する「プロジェクトが、この形式に変換することができないプロジェクトが唯一のAccess 2000以降の形式に変換することができます。」それでも、この同じエラーメッセージは、 'acFileFormatAccess97'または 'acFileFormatAccess2000'のように、ファイルパラメータの列挙型の値に関係なく表示されます。誰もがこのエラーの詳細を知っていて、可能な解決策は何か?私は、問題の一部であると考えて、2番目のパラメータの拡張を変更しようとしましたが、これはエラーメッセージに変更を加えませんでした。

私が使用しているサンプルファイルは、Accessで開くことができます。それは失敗した変換そのものです。

誰もがプログラム的に変換を行うためのより良いアイデアやアプローチを持っているなら、私はそれを聞いて欲しいですが、これが私が見つけた唯一のものです。計画は、C#で書かれたGUIアプリケーションからこのスクリプトを実行することですが、コマンドラインからもアプリケーションを実行できるようにします。

答えて

3

私はMicrosoftのAccess Interop APIを使用しています...これはVBScriptで書かれています。

ナンセンス。私はC#の(のVisual Studio 2010)でこれを試してみましたが、それはアクセス2010で私のためにうまく働い:

// COM reference required for project 
//  Microsoft Access 14.0 Object Library 

var app = new Microsoft.Office.Interop.Access.Application(); 
app.ConvertAccessProject(
     @"C:\Users\Public\test\a97test.mdb", 
     @"C:\Users\Public\test\a2007converted.accdb", 
     Microsoft.Office.Interop.Access.AcFileFormat.acFileFormatAccess2007); 
app.Quit(); 

なお、この意志ほぼ確実ない後のアクセス2013年と仕事、どちらも希望VBScriptの実装は、Access_97(およびそれ以前の)データベースを開けるには、を絶対に拒否しているため、これらのバージョンのAccess用のCOM Interopについては、

+0

ありがとうございます。このコードが実行されると、Accessのインスタンスと保存プロンプトが表示されます。これが起こらないようにする方法はありますか? – user1684458

+0

Nevermindでは、最初に2002形式に変換してから、再び2007形式に変換することで、実際のアプリケーションをバイパスすることができました。ご協力ありがとうございました。 – user1684458

0

プレーンVBScriptはac *定数についてはわかりません。したがって、それらを適切に定義します。

0

問題は2倍です。

まず、アクセス2007以降のアクセスのJET 4フォーマット2000

第二に、2007形式のための定数は、acFileFormatAccess2007、ないacFileFormatAccess12で、それは数値だより古い形式を読むことはありませんこの時点では12

ある定数の値、ドキュメントが間違っている:

AcFileFormat Enumeration (Access)

JET 4への最初の変換のために古いバージョンのAccessを取得し、次に2007形式に変換する別の手順を取得する必要があります。

編集:

もちろん、Gordが示すとおりです。

関連する問題