Microsoft Access 2007または2010で既存のインポート仕様を変更する方法を知っている人はいますか?以前のバージョンでは、インポートウィザード中に表示される[詳細設定]ボタンを使用して、既存の仕様を選択および編集できました。私はもはやこの機能を見ていませんが、それがまだ存在し、他の場所に移動されたことを願っています。
MS Access 2007を使用しているマシンでこの機能を使用できます。
その価値のために、私はAccess 2007 SP1を使用しています
直接サポートされている方法があるとは思わない。ただし、もしあなたが絶望的な場合、ナビゲーションオプションの下で、システムオブジェクトを表示することを選択します。次に、テーブルリストにシステムテーブルが表示されます。ここでは、MSysIMEXspecsとMSysIMEXColumnsの2つのテーブルが重要です。インポートおよびエクスポート情報を編集できます。がんばろう!
Tim Lentineの答え は完全なリリースでも真実のようです。言及したいことがもう1つあります。
「詳細設定...」に進んで仕様を保存せずにインポートを完了したが、ウィザードの最後で再利用のためにインポートを保存した場合(新機能は知らない)、戻って編集することはできませんスペック「保存されたインポート」に組み込まれています。これは、Knoxが言及していることかもしれません。
ただし、次の部分的な回避策を実行できます。
以下は、MS Access 2010インポート仕様を変更して使用するために使用できる3つの機能です。 3番目のサブは、既存のインポート仕様の名前を変更します。 2番目のサブでは、インポート仕様のxmlテキストを変更できます。これは、列名、データ型の変更、列の追加、インポートファイルの場所の変更などが必要な場合に役立ちます。本質的には、既存の仕様に対して変更するものは何でも変更できます。最初のSubは、既存のインポート仕様を呼び出して、インポートしようとしている特定のファイルに合わせて変更し、そのファイルをインポートしてから、変更された仕様を削除し、インポート仕様の「テンプレート」を変更せずにそのまま維持できるルーチンです。楽しい。
Public Sub MyExcelTransfer(myTempTable As String, myPath As String)
On Error GoTo ERR_Handler:
Dim mySpec As ImportExportSpecification
Dim myNewSpec As ImportExportSpecification
Dim x As Integer
For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
x = CurrentProject.ImportExportSpecifications.Count
End If
Next x
Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTempTable)
CurrentProject.ImportExportSpecifications.Add "TemporaryImport", mySpec.XML
Set myNewSpec = CurrentProject.ImportExportSpecifications.Item("TemporaryImport")
myNewSpec.XML = Replace(myNewSpec.XML, "\\MyComputer\ChangeThis", myPath)
myNewSpec.Execute
myNewSpec.Delete
Set mySpec = Nothing
Set myNewSpec = Nothing
exit_ErrHandler:
For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
x = CurrentProject.ImportExportSpecifications.Count
End If
Next x
Exit Sub
ERR_Handler:
MsgBox Err.Description
Resume exit_ErrHandler
End Sub
Public Sub fixImportSpecs(myTable As String, strFind As String, strRepl As String)
Dim mySpec As ImportExportSpecification
Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTable)
mySpec.XML = Replace(mySpec.XML, strFind, strRepl)
Set mySpec = Nothing
End Sub
Public Sub MyExcelChangeName(OldName As String, NewName As String)
Dim mySpec As ImportExportSpecification
Dim myNewSpec As ImportExportSpecification
Set mySpec = CurrentProject.ImportExportSpecifications.Item(OldName)
CurrentProject.ImportExportSpecifications.Add NewName, mySpec.XML
mySpec.Delete
Set mySpec = Nothing
Set myNewSpec = Nothing
End Sub
インポート/エクスポートの仕様を調べたり変更したい場合、仕様が定義されているMS Accessのテーブルを照会します。
SELECT
MSysIMEXSpecs.SpecName,
MSysIMexColumns.*
FROM
MSysIMEXSpecs
LEFT JOIN MSysIMEXColumns
ON MSysIMEXSpecs.SpecID = MSysIMEXColumns.SpecID
WHERE
SpecName = 'MySpecName'
ORDER BY
MSysIMEXSpecs.SpecID, MSysIMEXColumns.Start;
UPDATEまたはINSERTステートメントを使用して、既存の列を変更したり、既存の仕様に新しい列を挿入および追加したりすることもできます。この方法を使用して、まったく新しい仕様を作成できます。
もう1つの優れたオプションは、Microsoft Access用の無料の V-Tools アドインです。他の便利なツールの中でも、インポート/エクスポート仕様を編集および保存するためのフォームがあります。
注:バージョン1.83の時点では、Windows 10のコードページの列挙にバグがあります(Windows 10のAPI機能が欠落しているか変更されているため)。数行のコードをコメントアウトするか、デバッグウィンドウでステップを通過するだけです。
これは、オンライン注文の複雑なインポート仕様を編集する上で、私にとって実際の命の恩人でした。
なぜそんなに複雑なのですか?
Access-Options/Current Database/Navigation Options/Show System ObjectsのSystem Objectsをチェックするだけです
テーブル「MSysIMEXSpecs」を開き、必要に応じて変更します-読みやすい...
AccessのSaved Import/XMLセットアップ全体に明らかなバグを発見しました。また、Saved Importシステムの厳格さに苛立ち、フォームを作成し、Saved Import仕様が保存されているXMLを選択するためのコードを作成しました。ソースExcelワークブックの検査。
私が見つけたのは、Accessがユーザーのデフォルト設定の変更ごとにワークシートを正しくインポートする一方で(たとえば、ヘッダー名が「ID」で終わる列を取得して、結果のテーブルですが、インポートプロセス中にこれをキャンセルできます)、またユーザーの変更に応じてXMLを正しく作成しますが、テーブルを削除し、保存されたインポートを使用してワークシートを再インポートすると、XMLは無視されます少なくとも「ID」列の場合は、仕様をインポートし、独自のデフォルトを使用するように戻します。
これを自分で試すことができます。「ID」で終わる列ヘッダー名が少なくとも1つあるワークシートExcelをインポートします(「OrderID」、「User ID」、または単なる「ID」)。プロセス中に、それらの列の「インデックス付き」を必ず「いいえ」に設定してください。インポートを実行し、最後のダイアログウィンドウで[インポートステップの保存]をオンにします。結果のテーブルデザインを調べると、問題のフィールドにインデックスがないことがわかります。次に、テーブルを削除し、保存されたインポートを見つけて、再度実行します。今回は、XMLでまだインデックスが指定されていなくても、これらのフィールドはテーブルデザインでインデックス付きとして設定されます。
何が起こっているのかを発見するまで髪を引っ張り、最初から構築したXMLとAccessツールで作成したサンプルを比較しました。
Tim Lentineの答えは、仕様が保存されていれば機能します。あなたの質問はそれを特定せず、あなたがデータをインポートしたとだけ述べました。彼の方法では、仕様がそのように保存されません。
現在のインポートの仕様を保存する方法は、インポートを再度開き、「アペンド」を押すと、MS Accessが選択した現在のインポート設定を使用できるようにすることです。 (これは、MS Accessにインポートする前に作業したExcel形式のインポート仕様を保持したい場合に便利です。)
アペンドオプションが表示されたら、高度なオプションと「名前を付けて保存」を使用するTimの指示を使用します。そこから、[キャンセル]をクリックするだけで、他の同様のデータをさまざまなテーブルなどにインポートできます。