• ベストアンサー

ACCESS:保存済みのインポート操作のパスを取得

Access2007を使用しています。 「保存済みのインポート操作」で登録している操作名から 指定しているファイルのパス名を取得したいのですが 方法がわかりません。 ちなみに、VBAで DoCmd.RunSavedImportExport "(保存済みのインポート操作名)" を実行する前に取得したいと考えています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

ImportExportSpecificationオブジェクトのXMLプロパティに、 指定ファイルのパス名が格納されていることは確認できました。 標準モジュールに以下のコードを貼り付けた後、Ctrl+Gキーで イミディエイト ウィンドウを表示させたら、そこに「ImpExpTest」と 入力して、Enterキーを押してください。 指定したインポート操作について、XMLプロパティに記録された 値がイミディエイト ウィンドウに表示されます。 あとは、InStr関数を使って、「Path=」の直後とその次の「"」の 位置から、パスの開始位置と長さを確認して、Mid関数で 切り出し、ということになるかと思います。 (こちらはコード省略させていただきます) Public Sub ImpExptest() On Error GoTo エラー処理   Dim Prj As CodeProject   Dim Obj As ImportExportSpecification   Dim ImpName As String, strXML As String   'パス名を確認するインポート操作の名前を指定   ImpName = "(保存済みのインポート操作名)"   'XMLプロパティの値をイミディエイト ウィンドウに表示   Set Prj = CurrentProject   Set Obj = Prj.ImportExportSpecifications(ImpName)   strXML = Obj.XML   Debug.Print strXML    終了処理:   '念のためにメモリを明示的に開放   Set Obj = Nothing   Set Prj = Nothing   Exit Sub エラー処理:   MsgBox Err & ":" & Error$, , "ImpExpTest"   Resume 終了処理 End Sub

taiyou55
質問者

お礼

ありがとうございます! アドバイスどおりやってみたところ出来ました。 XMLプロパティは知らなかったので、大変勉強になりました。 ありがとうございました。

関連するQ&A

  • エクセルからアクセスにインポートする際のエラーについて

    こんにちは。 エクセルで作成された従業員台帳を、アクセスにインポートしたいのですが、エラーが出て困っています。 インポートの為のフォームを作り、参照ボタンでそのエクセルファイルを選択してフルパスを取得し(こちらの動作はOKです)、実行ボタンでそのファイルをインポートする、という方法をとろうと思います。 transferspreadsheet で、エクセルのファイル(.xls)は問題なくいくのですが、csv形式のファイルを指定して同じようにインポートすると、 実行時エラー 3274 外部テーブルのフォーマットが正しくありません。 となってしまいます。 書いているコードは、 DoCmd.TransferSpreadsheet acImport, 8, "従業員台帳(アクセス側でのテーブルの名前)", "上記画面で取得したフルパス", True(一番上の項目をフィールド名として使用します), "" です。.xlsでも.csvの形式でもインポートできるようにしたいのです。 環境は、winXPpro、Access2000、Excel2000 です。 よろしくお願いします。

  • MS AccessでExcelファイルのインポートは?

    AccessのVBAでExcelファイルをインポートするにはどうすればいいのでしょうか? ちなみに DoCmd.TransferText acImportDelim, , "Tmp名簿", strInPutPath & "\名簿.csv", True (strInPutPathは、ダイアログから取得したパスです) では、CSVファイル(TXTファイル)しか読み込めません。 (もちろん、そのため拡張子が「.csv」にしていますが 読み込むファイルをテキストファイルにしたら「.txt」でもいいです) 「ファイル」メニュー(コマンド)の「外部データの取り込み」→「インポート」では、Excelファイルも読み込めるので悔しいです。 これをVBAでやりたいんですが。 よろしくお願いいたします。

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • そのファイルのパスって取得できますか?

    ExcelでVBAを書いているんですが、たとえば、マイドキュメントとかのパスって、調べることが出来ますよね? そういった感じで、自身がどこにいるかも取得する方法ってあるのでしょうか? もちろん、ファイルを指定するようなダイアログを出せば出来るんですが、今回のは、そういったことじゃなくて、ユーザ側には何の操作もさせないことを考えています。 最終的にやりたいことは、同じディレクトリ内のファイルとの同期なんですが、やはり、ファイルの位置は、フルパスで指定しないとダメなんでしょうか。 どなたか、よろしくお願い致します。

  • ACCESS VBAでのインポート

    アクセスでエクセルのファイルをインポートするVBAを書いています。 まず、フォルダ内のファイル名を全て取得してコンボボックスで表示します。 そのコンボボックスからインポートするファイルを選択し、インポートします。 ところが、インポートしようとすると「実行時エラー'3011'」となり、オブジェクトが見つかりませんとなってしまいます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", Me.shimei_folder.Value & "\06.6.1氏名順.xls", True このように記述するとキチンとインポートするのですが、 path = Me.shimei_folder.Value & "\" & CStr(Me.shimei_combo.Value) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", path, True これだと3011エラーになってしまうのです。 エラー表示が「オブジェクト"06.6.16氏名順$"が見つかりません」となるのですが、.xlsが$になってしまうのが原因??とも思います。 コンボボックス上は「06.6.16氏名順.xls」と表示されているし、デバッグしてみてもMe.shimei_combo.Valueは「06.6.16氏名順.xls」なのですが・・・。 どなたか、解決方法がわかれば教えて下さい。 ちなみにACCESS、EXCELともに2000です。

  • Access2000のCSVファイルのインポートについて

    Access2000でCSVファイルをインポートしようと思っています。 インポート方法は、VBAで 「DoCmd.TransferText acImportDelim, , "テーブル名", "ファイル名"」を使用しています。 この時に、CSVファイルが次のようなデータです。 F1,F2,F3 0010,0200,0001A12 0011,0201,0021B12 (実際は、1000件近いデータです) これをインポートすると、 F1,F2,F3 10,200,1A12 11,201,21B12 となってしまいます。 頭の「0」を省きたくないのです。 文字列として取り込めないでしょうか? CSVのデータに""を自動でつける方法はないでしょうか? Accessの外部データの取り込みを使うと、文字列として指定できるのですが、VBAを使いワンクリックでデータを取り込もうとしています。 よろしくお願いします。

  • CFileDialogを使用して、Pathを取得する方法

    お世話になっております。 CFileDialogクラスを使用して、Pathを取得する 方法がないでしょうか? 処理の流れでは、下記のような考えでいます。 (1)ダイアログ上の「参照」ボタンを押すと、ファイルダイアログが表示される。 (2)ファイルダイアログで、ディレクトリを移動し、任意のディレクトリまで移動したら、「開く」(または保存)を押下する。 (3)ファイルダイアログを閉じ、移動したPathを取得する。 です。 ファイルダイアログを開くところまでは出来ていますが、ファイル名を指定しないで、「開く」(または保存)を押しても、ファイルダイアログが閉じないので、困っています。 (3)のパス取得に関しては、既に処理の方法はわかっているので、(2)の部分(ファイル名を指定しないで、「開く」(または保存)でファイルダイアログを閉じる方法)をご教唆ください。 よろしくお願いします。

  • ACCESS2007 VBAでのインポートウィザードの呼び出し方

    VBAを使ってテーブルへのインポート、 クエリの実行からEXCELファイルへのエクスポートまでを 一連で行いたいと考えています。 インポート時はファイル名が決まっていないので、 インポートウィザードを呼び出したいのですが、 ACCESS2003以前であれば、 「DoCmd.RunCommand acCmdImport」 でできたところ、 ACCESS2007では ------------------------------ DoCmd.RunCommand acCmdImport オブジェクト モデル呼び出しと Import RunCommand マクロはサポートされなくなりました。このオブジェクト モデル、または RunCommand マクロを呼び出すと、エラー メッセージが表示されます。代わりに、より特化した ImportAttach コマンドを使用します。 ------------------------------ とのことでエラーとなってしまいます。 肝心のImportAttachコマンドを使おうと、検索をかけたのですが、 どこにも情報が無く、構文すらわからない状況です。 ヘルプを探しても情報は見当たりませんでした。 探し方が悪いのかもしれないのですが、 参考となるURLや構文を教えていただければ助かります。 もちろん、インポートするファイルをGUIで選択できるのであれば、 別の方法でも構いません。 よろしくお願いいたします。

  • インポートエラーのテーブルを自動で削除するには?

    アクセスで、インポートエラーがあった時に、 エクセルの元ファイル名$_インポート エラーの テーブルが出来ますが、 これをVBAで DoCmd.DeleteObject acTable, "* _インポート エラー *" とするとエラーとなります。"* _インポート エラー *"がいけないのでしょうか?適切な方法よろしくお願いします。

  • SQLServer→Access インポート

    こんばんは。 Windows2000、Access2000でVBにて開発をしています。  1.SQLServerのリンクテーブルおよびAccessローカルテーブルからテーブル作成クエリを実行→TableA  2.TableAを「TableA_YYYY/MM/DD」としてSQLServerへコピー(YYYY/MM/DD=出力時の日付) 1.2.を前提に、前日のTableA_YYYY/MM/DDをAccessへ「TableB」としてインポートしたいのですが、 'SQLServerのデータベース名 Path = "ODBC;DSN=AAA;UID=BBB;PWD=CCC;DATABASE=DDD" DoCmd.TransferDatabase acImport, "ODBC データベース", Path, acTable, "TableA_" & DateAdd(d,-1,date), TableB, False, True とすると、 「クエリの構文エラーです。クエリの句が不完全です。」 とエラーになってしまいます。 どなたか、解決策を教えていただけたらと思います。