• ベストアンサー

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

アクセスを使い,複数のエクセルファイルからインポートしたデータを集計する仕組みを作成中です。 現在は手動で(ウイザードを使って)テーブルをインポートしているのですが,この作業がフォーム上のボタンをクリックすることで出来るようになれば,と考えています。 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

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

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

  • Access Excelのインポートについて

    お世話になります。 Access2010 Excelインポート時の仕様についてご教示下さい。 フォーム上に「インポート」ボタンを設置し、ボタンを押すと ファイル選択ダイアログが表示され、そこで選択されたファイルを インポートしています。 DoCmd.TransferSpreadsheet acImport, 10, "temp", strFile, True ※strFileはダイアログにて選択されたファイルのパス インポートする前に事前にテーブルを作成しておき、そこに Excelのデータがインポートされます。 事前に作成しておくテーブル(temp)のデータ型は以下の通りです。 ID オートナンバー 契約開始日 日付/時刻型 契約終了日 日付/時刻型 案件名   テキスト型 価格    テキスト型 ※Excelの「価格」は通貨型となっておりますが、いくつかのセルに  文字列が入力されている為、テキスト型としてます。 <質問> インポートすると、「価格」フィールドにてデータ型の変換エラーが 発生します。エラーテーブルを確認したところ、Excelの「価格」に 文字列が入っている行でした。 予めテキスト型を用意しておいても、文字列の行はエラーとなって しまいます。なお、価格(数値)が入力されているものは、文字列として インポートされています(左詰めになっている)。  100000  50000  10000  80000   ・  50000  空白  ← 本来は文字列が入力されている。 予めテキスト型を用意しておいたとしても、インポート時の仕様?で 先頭から数行が数値なら数値フィールドと認識されてしまって、 文字列が削れ落ちてしまうのかなと。 ちなみに、インポートするExcelの先頭行の価格を「'100000」にして インポートしたところ、ちゃんとインポートはできましたが、 2行目以降は¥マークも含めた文字列でインポートされてしまいました。  100000  ¥50000  ¥10000  ¥80000   ・  ¥50000  文字列 どうにか対処する方法はございますでしょうか。 以上、宜しくお願い致します。

  • 度々すみませんがインポートのことで・・・

    度々すみません。 どうしてもお伺いしたいのですが csvファイルのインポートを コマンドボタンで行いたいのですが 「外部テーブルのファーマットが正しくありません」と エラーが出てしまいます。 下記に何が問題あるのでしょうか、教えて下さい。 ちなみにファイル名はhead.csvでシート名もheadです。 インポートしたいテーブル名はheadです。 テーブルの形式はすべてあわせてあります。 テーブルをカラにしてみたり ヘッダー部分のみの状態でも同じエラーでした。 Private Sub コマンド3_Click() On Error GoTo Err_コマンド3_Click Dim stDocName As String stDocName = "マクロ1" DoCmd.TransferSpreadsheet acImport, , "head", "C:\My Documents\hea d.csv", True, "head" Exit_コマンド3_Click: Exit Sub Err_コマンド3_Click: MsgBox Err.Description Resume Exit_コマンド3_Click End Sub ---------------------------------------- OSは、Windows 98 アプリケーションは、Access 2000 です ----------------------------------------

  • 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です。

  • Accessにエクセルからデータをインポートしたい(VBA)

    Access(2000)のVBAでExcel(2000)からデータをインポートしたいと思います。 詳細は以下の通りです。 フォームでコマンドボタンをクリック時にダイアログボックスが開き、ファイルを指定し、該当のシート(シート名はどのファイルも固定)のデータをアクセスのテーブルにインポートしたい。 どうしたらできるのかここ数日悩んでいます。 よい方法がありましたら教えてください。

  • Accessにインポートしようとするとエラーに

    Access2000にcsvファイルをインポートしようとすると、最後の「完了」ボタンクリック時に、下記エラーが表示され、 インポートが行われません。 「フィールド'フィールド名'の開始位置'35642'が有効ではありません。開始位置は32,767以内で指定してください。」 「インポート/エクスポート定義 'ファイル名 インポート定義'を保存するときにエラーが発生しました。」 これは、どこを修正すればいいのでしょうか?

  • Access97 Excelファイルのインポート

    はじめまして、こんにちわ。 早速ですが、質問させてください。 Access97で既存のテーブルにExcelファイルをインポートした際にエラーがでてインポートできないファイルがありました。その原因を調査している次第です。 Excelファイルは様々な担当者に作成いただく予定ですので、エラーの再現性を確認して、原因となる作業を予め禁止しておきたいと考えております。 (1)ファイル→外部データ取込→インポートからインポートするExcelファイルを選択し、インポートボタンを押したところ、『ファイル○○にアクセスできません。このファイルが存在するか、またファイルの形式が正しいか確認してください』と言うエラーが出ます。 実際にそのファイルは開けますし、同じように作成したファイルはインポートできるものもあります。 中身を全てコピーし、新規作成したExcelファイルに貼り付けて名前をつけて保存したものをインポートすると、問題なくインポートできました。 どういった作業をすると、上記エラーが出るようなファイルになってしまうのでしょうか。 (2)ファイル→外部データ取込→インポートからインポートするExcelを選択し、インポートボタンを押した後、ワークシートインポートウィザードで『先頭行をフィールド名として使う』をチェックすると、『先頭行にAccessフィールド名に使用できない文字が含まれています。』というエラーが出ます。 調べてみると、空白の列がフィールドとしてインポートされるようになっています。Excel上では何も表示されていない列で、その列を削除すればエラーがなくなります。 どういった作業をすると、空白の列や行がインポートされるようになってしまうのでしょうか。 お手数ですがよろしくお願い致します。

  • Access から Excelのシートをインポート時エラー

    Access の既存のテーブルにExcelのスプレッドシートからデータをインポートするため次のコマンドを実行すると、 F1フィールドがない旨のエラーメッセージが表示されます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "アクセスのテーブル名", "インポート元のエクセルファイル名.xls", False ここで、F1フィールドとは何でしょうか。 Excelのシートの1行目にAccessのテーブルの項目名と同名の項目名を挿入しておけば、上のコマンドの最後の引数をTrueにすればインポートは成功します。項目名のないスプレッドシートはインポートできないのでしょうか。 ご存知の方、教えてください。

  • iTunes7でインポートできません

    iTunes6から7へバージョンアップをしたのですが、 CDを挿入すると右上にあったはずのインポートの「ボタン」がなく、 パソコンに取込めなくなりました。 「ボタン」の表示に設定をする必要があるのでしょうか。 ファイル→インポートをクリックしてもマイドキュメントフォルダーの 中身が表示されるだけです。 どなたかお助けください。。。

  • 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"

初期設定後プリントできない
このQ&Aのポイント
  • 初期設定終了後にプリントする段階で、ローラーを掃除してくださいと表示され、プリントできません。
  • ブラザー製品の初期設定後にプリントする際に、ローラーの掃除が必要と表示され、プリントできない状態になっています。
  • 初期設定が完了した後、プリントするときにローラーの掃除が必要であり、その表示がされているため、プリントできない状況です。
回答を見る

専門家に質問してみよう