• ベストアンサー

エクセルからのインポートについて

アクセスを使い,複数のエクセルファイルからインポートしたデータを集計する仕組みを作成中です。 現在は手動で(ウイザードを使って)テーブルをインポートしているのですが,この作業がフォーム上のボタンをクリックすることで出来るようになれば,と考えています。 TransferSpreadsheetを使う方法を試してみたのですが,これはインポート元のファイル名を絶対パスで記述する必要があり,ファイル名を変えてしまった場合,保存場所を変えてしまった場合などに対応できません。 より柔軟に対応できるようにするために,ボタンをクリックすると「ファイルを開く」ウインドウのようなものが開き,パスとファイル名をマウスで指定できるようにしたいのですが,このようなことは可能でしょうか?何かご存知の方がいらっしゃれば,ご教示下さい。よろしくお願いします。 ※何分初心者ゆえ,質問内容に分かりにくい点,不正確な用語の使い方などあると思います。併せてご指摘いただけると幸いです。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 Microsoft Common Dialog Control 6.0 (または、5.0)を参照設定します。 XP 以下の場合などは、以下のようにすればよいと思います。 ただし、Common Dialog のActiveX コントロールは、VB6 のランタイムに入っていますから、それを入手してください。 入手先例: http://www.hidex.info/kuroya/runtime.html 'Excel 2000 は、TypeExcel9 '-------------------------------------------- Private Sub コマンド1_Click() Dim xlFileName As String  CommonDialog1.Filter = "EXCELファイル(*.xls)"  CommonDialog1.ShowOpen  On Error GoTo ErrHandler  CommonDialog1.MaxFileSize = 256  xlFileName = CommonDialog1.Filename  DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, TableName1, xlFileName ErrHandler:  If Err.Number > 0 Then  MsgBox Err.Description  End If  Exit Sub End Sub '-------------------------------------------------- そういうことが環境的に出来ないのでしたら、以下のようにすれば、ファイル名は取れます。 Sub GetFileNamePrc() Dim xlFileName 'Excelに参照設定した場合 'Dim xlApp As New Excel.Application 'With xlApp '以下はそうでない場合 With CreateObject("Excel.Application")   xlFileName = .GetOpenFilename("Excel(*.xls),*.xls") End With ' ・ 次の実行ファイル ' ・ End Sub

dskh4390
質問者

お礼

早速のご解答ありがとうございます!エクセルに参照設定する方法を使って,イメージしていたようなものができました。「目からウロコ」という感じです。勉強になりました!

その他の回答 (1)

回答No.1

こんばんは。 Office XP 以降であれば、Office オブジェクトの FileDialog プロパティが利用できると思います。 キーワードを「FileDialog」でネット検索すればサンプルコードが多数見つかると思います。 なお、参照設定で Microsoft Office xx.0 Object Library にチェックを入れてくださいね。

dskh4390
質問者

お礼

素早いご解答ありがとうございます。職場のPCにはAccess2002が入っているのですが,自宅PCが2000ゆえ,最終的にはエクセルに参照設定する方法でやってみました。 ともあれ,『FileDialog』の検索でたくさんの有益な情報を得ることができ,非常に勉強になりました。本当にありがとうございました!

関連するQ&A