44

Microsoft Access 2007または2010で既存のインポート仕様を変更する方法を知っている人はいますか?以前のバージョンでは、インポートウィザード中に、既存の仕様を選択して編集できる[詳細設定]ボタンが表示されていました。この機能は表示されなくなりましたが、まだ存在していて、別の場所に移動されたことを願っています。

4

10 に答える 10

45

MS Access 2007 を使用しているマシンでこの機能を使用できます。

  • リボンで、[外部データ] を選択します。
  • 「テキストファイル」オプションを選択します
  • 外部データの取得ウィザードが表示されます
  • インポートするファイルの場所を指定します
  • [OK] をクリックします。「テキストのインポート ウィザード」が表示されます。
  • このダイアログ画面の下部には、参照した [Advanced] ボタンがあります
  • このボタンをクリックすると、インポート仕様画面が表示され、既存のインポート仕様を選択して変更できるようになります。

その価値のために、私はAccess 2007 SP1を使用しています

于 2008-09-29T16:14:19.427 に答える
17

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!

于 2008-09-27T12:07:01.597 に答える
7

ティム・レンティンの答えは、フルリリースでも真実のようです。私が言及したいもう一つのことがあります。

「詳細...」に移動して仕様を保存せずにインポートを完了したが、ウィザードの最後に再利用するためにインポートを保存した場合(新機能AFAIK)、戻って編集することはできません。スペック 「保存されたインポート」に組み込まれています。これは、ノックスが言及していたものかもしれません。

ただし、次の部分的な回避策を実行できます。

  1. 新しいファイル(または同じファイルをもう一度)をインポートしますが、
  2. 今回は、新しいものを作成する代わりに、追加することを選択します
  3. [OK]をクリックします。
  4. 「詳細」に移動します。すべての列見出しとデータ型が表示されます。
  5. これで、必要な変更を加えて、そのダイアログ内に仕様を保存できます。次に、そのインポートをキャンセルします(とにかく、それはあなたが望んでいたことではありませんよね?)
  6. その後、その仕様をさらにインポートするために使用できます。これは完全なソリューションではありませんが、作業の一部を節約できます。
于 2009-05-13T00:20:37.010 に答える
7

以下は、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
于 2013-01-21T16:29:43.200 に答える
3

インポート/エクスポートの仕様を調べたり変更したりする場合、仕様が定義されている 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 ステートメントを使用して、既存の列を変更したり、既存の仕様に新しい列を挿入および追加したりすることもできます。この方法論を使用して、まったく新しい仕様を作成できます。

于 2013-07-28T22:17:14.770 に答える
2

もう 1 つの優れたオプションは、Microsoft Access 用の無料のV-Toolsアドインです。他の便利なツールの中でも、インポート/エクスポート仕様を編集および保存するためのフォームがあります。

ここに画像の説明を入力

ここに画像の説明を入力

注: バージョン 1.83 の時点で、Windows 10 でコード ページを列挙する際にバグがあります。コードを実行するか、デバッグ ウィンドウでそれを通り過ぎます。

これは、オンライン注文の複雑なインポート仕様を編集する際に、本当に助かりました。

于 2017-03-06T17:53:39.550 に答える
0

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 ツールで作成した例を比較しながら、何が起こっているのかを理解するまで、私は頭を悩ませていました。

于 2015-01-29T18:04:04.790 に答える