MS Excel で既にマッピングされたインポート仕様があります。
ただし、これをコピーして MS Access の [高度なテキスト ファイルのインポート] ウィザードに貼り付けようとすると、エラーなしで入力が検証され、最後のステップに到達したときにエラーが表示されるだけです。
この問題に遭遇した人はいますか? 仕様を手動で入力することもできますが、200 以上のフィールドがあるため、非常に時間がかかります。
ありがとう。
Microsoftによると、あるデータベースから別のデータベースに仕様をコピーすることはできません。インポート/エクスポート仕様のAccess-Access転送が禁止されている場合は、Excel-Access転送も使用できないことは理にかなっています。
ただし、仕様はMS Accessのテーブル、具体的にはMSysImexSpecsテーブルとMSysImexColumnsテーブルに格納されます。MS Accessに使用するバージョンによって、これらの非表示のテーブルを表示する方法は異なります。Googleはすぐにそれらにあなたを導くことができます。
一部のVBAコーディングでは、ソースデータベースのMSysImexSpecsの内容を読み取り、データを宛先テーブルのMSysImexSpecsに挿入することで、仕様のAccess-Access転送を実現できます。
Excelはテーブルを利用しないため、MSAccessで仕様を再構築するよりも速い解決策があるとは正直信じていません。
以下は、今日見つけたインポート/エクスポート仕様のAccess-Access移行のコード例です。ImEx仕様がExcelに(おそらくコレクションに)保存される方法を知っている場合は、以下のコードを変更して、ExcelコレクションからAccessテーブルに移行することができます。
Sub GetSpecs()
Dim accApp As Object
Dim SourceDBName As String
Dim DbPath As String
Dim CurrDB As String
SourceDBName = "C:\SourceDB.mdb"
DbPath = "C:\TargetDBPath\" 'Make sure about last slash
Set accApp = CreateObject("Access.Application")
CurrDB = Dir(DbPath & "*.mdb", vbNormal)
Do Until Len(CurrDB) = 0
If Not DbPath & CurrDB = SourceDBName Then
accApp.OpenCurrentDatabase DbPath & CurrDB
On Error GoTo errhandler
accApp.CurrentDb.TableDefs.Delete "MSysIMEXSpecs"
accApp.DoCmd.TransferDatabase acImport, "Microsoft Access", SourceDBName, acTable, "MSysIMEXSpecs", "MSysIMEXSpecs"
accApp.CloseCurrentDatabase
CurrDB = Dir()
End If
Loop
accApp.Quit
MsgBox "Done", vbOKOnly + vbInformation, "Error"
Exit Sub
errhandler:
If Err = 3265 Then
Resume Next
Else
MsgBox Err & " - " & Err.Description, vbOKOnly + vbExclamation, "Error"
If Not accApp Is Nothing Then accApp.Quit
End If
End Sub
出典: http ://www.mrexcel.com/forum/showthread.php?58094-Import-Specifications
インポート ルーチン テーブルの上隅を強調表示して貼り付けます (続き V) テーブルは同じ形式でなければならないため、インポート仕様を強調表示して既存のインポート仕様をコピーするのが最善の方法です (仕様テーブルの左上隅)。と cntl C を入力して Excel に貼り付け、新しい仕様に合わせて調整し、再度貼り付け、インポート ルーチン テーブルの上隅を強調表示して貼り付けます (続き V)
アクセスのインポート仕様側はばかげていると何年も考えた後、今日これを発見しました。