- ベストアンサー
エクセルからのインポートについて
アクセスを使い,複数のエクセルファイルからインポートしたデータを集計する仕組みを作成中です。 現在は手動で(ウイザードを使って)テーブルをインポートしているのですが,この作業がフォーム上のボタンをクリックすることで出来るようになれば,と考えています。 TransferSpreadsheetを使う方法を試してみたのですが,これはインポート元のファイル名を絶対パスで記述する必要があり,ファイル名を変えてしまった場合,保存場所を変えてしまった場合などに対応できません。 より柔軟に対応できるようにするために,ボタンをクリックすると「ファイルを開く」ウインドウのようなものが開き,パスとファイル名をマウスで指定できるようにしたいのですが,このようなことは可能でしょうか?何かご存知の方がいらっしゃれば,ご教示下さい。よろしくお願いします。 ※何分初心者ゆえ,質問内容に分かりにくい点,不正確な用語の使い方などあると思います。併せてご指摘いただけると幸いです。
- みんなの回答 (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
その他の回答 (1)
- GreatDragon
- ベストアンサー率46% (186/402)
こんばんは。 Office XP 以降であれば、Office オブジェクトの FileDialog プロパティが利用できると思います。 キーワードを「FileDialog」でネット検索すればサンプルコードが多数見つかると思います。 なお、参照設定で Microsoft Office xx.0 Object Library にチェックを入れてくださいね。
お礼
素早いご解答ありがとうございます。職場のPCにはAccess2002が入っているのですが,自宅PCが2000ゆえ,最終的にはエクセルに参照設定する方法でやってみました。 ともあれ,『FileDialog』の検索でたくさんの有益な情報を得ることができ,非常に勉強になりました。本当にありがとうございました!
お礼
早速のご解答ありがとうございます!エクセルに参照設定する方法を使って,イメージしていたようなものができました。「目からウロコ」という感じです。勉強になりました!