Microsoft Access 2007または2010で既存のインポート仕様を変更する方法を知っている人はいますか?以前のバージョンでは、インポートウィザード中に、既存の仕様を選択して編集できる[詳細設定]ボタンが表示されていました。この機能は表示されなくなりましたが、まだ存在していて、別の場所に移動されたことを願っています。
10 に答える
MS Access 2007 を使用しているマシンでこの機能を使用できます。
- リボンで、[外部データ] を選択します。
- 「テキストファイル」オプションを選択します
- 外部データの取得ウィザードが表示されます
- インポートするファイルの場所を指定します
- [OK] をクリックします。「テキストのインポート ウィザード」が表示されます。
- このダイアログ画面の下部には、参照した [Advanced] ボタンがあります
- このボタンをクリックすると、インポート仕様画面が表示され、既存のインポート仕様を選択して変更できるようになります。
その価値のために、私はAccess 2007 SP1を使用しています
I don't believe there is a direct supported way. However, if you are desparate, then under navigation options, select to show system objects. Then in your table list, system tables will appear. Two tables are of interest here: MSysIMEXspecs and MSysIMEXColumns. You'll be able edit import and export information. Good luck!
ティム・レンティンの答えは、フルリリースでも真実のようです。私が言及したいもう一つのことがあります。
「詳細...」に移動して仕様を保存せずにインポートを完了したが、ウィザードの最後に再利用するためにインポートを保存した場合(新機能AFAIK)、戻って編集することはできません。スペック 「保存されたインポート」に組み込まれています。これは、ノックスが言及していたものかもしれません。
ただし、次の部分的な回避策を実行できます。
- 新しいファイル(または同じファイルをもう一度)をインポートしますが、
- 今回は、新しいものを作成する代わりに、追加することを選択します
- [OK]をクリックします。
- 「詳細」に移動します。すべての列見出しとデータ型が表示されます。
- これで、必要な変更を加えて、そのダイアログ内に仕様を保存できます。次に、そのインポートをキャンセルします(とにかく、それはあなたが望んでいたことではありませんよね?)
- その後、その仕様をさらにインポートするために使用できます。これは完全なソリューションではありませんが、作業の一部を節約できます。
以下は、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 でコード ページを列挙する際にバグがあります。コードを実行するか、デバッグ ウィンドウでそれを通り過ぎます。
これは、オンライン注文の複雑なインポート仕様を編集する際に、本当に助かりました。
Access の保存済みインポート/XML セットアップ全体に明らかなバグがあることを発見しました。また、Saved Import システムの硬直性にも不満を感じていたので、フォームを作成し、Saved Import 仕様が保存されている XML を分離するためのコードを書きました。このツールを使用して、コードを介して、Saved Import をゼロから実際に作成できるようになりました。ソース Excel ワークブックの検査。
私が見つけたのは、Access がユーザーによる既定の設定の変更ごとにワークシートを正しくインポートしている間 (たとえば、"ID" で終わるヘッダー名を持つ任意の列を取得し、それをインデックス付きフィールドにするのが好きです)。結果のテーブル、ただしインポート プロセス中にこれをキャンセルできます)、ユーザーの変更に従って XML も正しく作成されますが、テーブルを削除し、保存されたインポートを使用してワークシートを再インポートすると、XML は無視されます。仕様をインポートし、少なくとも「ID」列の場合は、独自に考案されたデフォルトを使用するように戻します。
自分でこれを試すことができます: "ID" ("OrderID"、"User ID"、または単なる "ID") で終わる列ヘッダー名が少なくとも 1 つあるワークシート Excel をインポートします。処理中は、これらの列の [インデックス] を [いいえ] に設定してください。インポートを実行し、最後のダイアログ ウィンドウで [インポート手順を保存する] をオンにします。結果のテーブル デザインを調べると、問題のフィールドにインデックスがないことがわかります。次に、テーブルを削除し、保存されたインポートを見つけて再度実行します。今回は、これらのフィールドはテーブル デザインでインデックス付きとして設定されますが、XML にはまだインデックスがないと書かれています。
ゼロから作成した XML と Access ツールで作成した例を比較しながら、何が起こっているのかを理解するまで、私は頭を悩ませていました。