• 締切済み

【ACCESS】コマンドにVBAで動作をつけたい

ACCESS2010使用をしています。 ACCESS使用歴はまだ数カ月と、初心者でございます。 フォームに作成したコマンドに色々な動作をさせたいと思っています。 付けたい動きは比較的単純だと思うのですが、 検索してもなかなかヒットせず、VBAで作成してみても、動いてくれません;_; お力をお貸し頂けると助かります。 以下にやりたい事を羅列いたしました。 【コマンド1をクリックすると】 指定のエクセルブックを開く 【コマンド2をクリックすると】 既存の更新クエリを"デザインビュー"で開く  (都度、中身を変えたいのでクエリを実行するのではなく、書き換えられるようにしたい) 【コマンド3をクリックすると】 既存の指定テーブルへ指定したエクセルブックをインポートをする   (指定のフォルダのから、インポートするエクセルブックを選択出来るようにしたい) ≪ 流れ(イメージ)は以下の通りです≫  コマンド3をクリック→指定のフォルダダイアログボックスが表示される  →エクセルブックを選択→インポート 説明不足の箇所がございましたすみません。 ご不明点等ございましら追記致します。 どうぞ、お知恵をお貸しくださいm(__)m

みんなの回答

回答No.1

マナー的にあれこれと一緒に質問されるのは如何なものかとおもいます。 ※それぞれが相互に関連しあっている場合、 Q1、Q2・・・ で今回はQ1についての質問。 というようなことでしたら、 まともな回答者はQ2以降も考慮しつつQ1について回答するか あるいは、適切にリードしてくれるかと思います。 今回に限り、回答してみます。 【コマンド1をクリックすると】 指定のエクセルブックを開く 開くだけでしたら、クリック時イベントに Createobject("shell.application").shellexecute "エクセルファイルのフルパス" が簡単でよろしいかと思います。 If Dir("e:\temp\test.xlsx") ="" then Msgbox "ファイルが見つかりません" exit sub end if Createobject("shell.application").shellexecute "e:\temp\test.xlsx" 開いた後であれこれと自動的に何かをExcelファイルに行いたい場合は オートメーションで処理することになります。 http://www.nurs.or.jp/~ppoy/access/access/acX006.html 【コマンド2をクリックすると】 既存の更新クエリを"デザインビュー"で開く  (都度、中身を変えたいのでクエリを実行するのではなく、書き換えられるようにしたい) Docmd.OpenQuery "クエリ名",acViewDesign,acEdit で開きます。 【コマンド3をクリックすると】 ファイルの選択には標準モジュールに Function MyFilePicker() As String Dim Dlg As Object Const msoFileDialogFilePicker As Integer = 3 '4 Set Dlg = Application.FileDialog(msoFileDialogFilePicker) With Dlg .InitialFileName = "E:\Temp" '初期検索先フォルダ指定 .AllowMultiSelect = False '複数ファイル選択の許可 .Filters.Clear 'ファイルフィルタの設定 .Filters.Add "すべてのファイル", "*.*" .Filters.Add "Excelファイル", "*.xls;*.xls?" .FilterIndex = 2 '初期選択フィルタの設定 .ButtonName = "決定" 'ボタンの表示文字列の設定 'キャンセル時にはShowメソッドは0(Long型)を返す If CBool(.Show) Then '選択ファイルのパスの取得 MyFilePicker = .SelectedItems(1) Else MyFilePicker = "" End If End With End Function というのを作成しておいて コマンド3のクリック時イベントに Dim MyFile as string If MyfilePicker = "" then Exit Sub else myfile=MyfilePicker End if Docmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel12Xml,"新テーブル",myfile,true,"sheet2!" のようにしておくと上記の例では Excel2007以降のファイル(acSpreadsheetTypeExcel12Xml)が テーブル名が"新テーブル" myfilepicker で選択したファイル フィールド名(カラム名)付きで、true sheet2 のデータ(指定していなければ一番左のシート)が インポートされます。(Office2010 では。2013は不明です。) 以上粗々とした説明ですので、実際には 誰か(貴方や隣の人)が既にExcelファイルを開いている場合、 Excelファイルの形式(xls,xlsx,xlsm)による分岐処理 既存テーブルへの追加、既存テーブルのレコード削除後の追加、 Excelファイル内に不適当な部分(データ型が異なるモノが紛れ込んでいる、セルの結合・・・) などの対処が必要になる場合が考えられます。 VBAの意味はそれぞれの語句にカーソルを持って行って、F1 キー (ヘルプ)で調べてください。 なお、いまさら言うなよ!と叱られそうですがIME2010のバグのため http://okwave.jp/qa/q8494169.html のように、MyFilePicker でも 『決定』ボタンを二回クリックしないと進みません。 その際は、hatena さんの WIZHOOK 使用バージョンで! 私からは以上です。

関連するQ&A

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

    ACCESS2000を使用しています。 ある指定のフォルダにある複数のEXCELファイルを、ACCESSに一括でインポートしたいです。 EXCELファイルは範囲指定を行います。(例えばb2:d100までインポートしたい) ブック名は部署名が入っており、シート名はどのブックも同一シート名です。 どのように行えばいいでしょか。 ご回答の程、どうぞよろしくお願いいたします。

  • VBAでのプログラム

    AccessにてExcelのファイルをインポートしてA,B,C・・・ という複数のテーブルを作成しました。でそのテーブルからA-1,A-2,B-1,B-2・・・というクエリを作成し、それからオートフォームで個別に表示できるフォームをそれぞれ作成しました。 ここからが質問なのですが、上記のファイルをフォームを 作成して検索できるようにしたいと思い、フォームは作成できたのですが、それに対応するアクションのプログラム がわからないのでご存知でしたら教えてください。 まず2つのチェックボックスで*-1,*-2とクエリ、フォームを選択し、コンボボックスでA,B,C・・・を選択して、コマンドボックスでボタンをクリックすると希望どおりのクエリかフォームが表示されるといった具合です。 かなりわかりづらいと思いますが、補足をさせて頂きますのでよろしくお願いします。

  • Excelのコマンドボタンでアクセスのデータを返す。

    Excelのブックに2シートあります。 シート1にはコンボボックス商品を選択させる行が複数あります。 シート2には、商品名がずらっと並んでいます。 (その商品名をシート1のコンボボックスで選択) シート1上にコマンドボタンを設定して、 コマンドボタンを押すと、アクセスのクエリで 抽出したデータ(商品名)を返したいのです。 マクロに外部データの取り込み→アクセスクエリ→ シート2の行にデータを返す。 事はできましたが、それをコマンドボタンに 上記マクロを書き込むことはできるのでしょうか? 表現が下手ですみません。。 よろしくお願い致します。

  • ACCESS Excelの出力について

    stressmanといいます。 実は、ACCESSでクエリをExcelへ出力をしたいのですが、 ここで、既存のExcelのファイルのセルを指定して出力 というこはできるのでしょうか? 選択クエリで必要な情報を抜き出し、そのクエリを 「営業報告書.xls」というファイルのあらかじめ記載して ある「顧客名」「住所」のセルに格納していきたいのです。 マクロで「コマンド実行」-「Excel出力」を使って みたのですが、新しくファイルを開き、クエリのデザイン そのままで出力されます。 宜しくお願いします。

  • Accessにおけるパスワード一括解除について

    指定のフォルダにあるエクセルブックをアクセスにて一括解除してそのままAccessにインポートする方法を探しています。 vba初心者なのでコードも頂けると助かります。

  • accessで作成したクエリーをエクセルに出力する時の問題

    アクセスで作成したクエリーをエクセルに出力します。フォームに作成したコマンドボタンを押すと、マクロが起動して、マクロで指定してあるフォルダにエクセルが出力されます。出力先にすでに同名のブックがある場合、「すでファイルが存在しています。上書きしますか。」と、いうメッセージが表示されますが、このメッセージを表示せずに無条件ですでに存在するファイルに上書きをしたいと思います。 メッセージを表示しない方法はありますか。一番いいのは,マクロ内でこのメッセージの非表示を指定できるのがいいのですが。 よろしくお願いします。

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

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

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

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

  • Accessで作ったクエリーを使ってさらに更新する方法

    Access97のクエリーを使ってデータの抽出や更新を行なっています。Accessでは作成したクエリーを使ってさらにクエリーを作れると思うのですが、うまくいきません。 内容は以下のとおりです。 (1)ある条件で「抽出クエリー1」を作る (2)別の「テーブル」と「抽出クエリー1」をキーマッチングさせ、マッチしたものだけ「テーブル」を更新させたい。 やりたいことは単純なのですが、これを行なうと 「更新可能なクエリーでなくてはいけません」とメッセージが出てしまい、更新できません。作ったクエリーがいけないのかと思い、一度エクセルにエクスポートし、再度アクセスにテーブルとしてインポートするとうまくいきました。ですが、こんな面倒な方法はやってられません。 作ったクエリーを再び別のクエリーで使う為にはどうしたらよいのでしょうか? ちなみに、選択クエリーや追加クエリーではこのようなことが起こったことはありません。 アクセスに詳しい方、どうかよろしくお願いします。

  • WindowsのWeb共有コマンドご存じないですか?

    Windows Server 2003でWeb共有をコマンドラインでおこなおうと思います。 iisweb /create でWebサイトの作成はできるのですが、サイトを作成するのではなく既存のWebサイトでフォルダをWeb共有したいのです。 通常のGUIでのWeb共有作業は、次のとおりです。 1.ローカルフォルダを指定します。 2.右クリックしてプロパティを表示します。 3.[Web共有]タブをクリックします。 4.このフォルダを共有するの画面を表示します。 5.エイリアスに任意の名称を指定し、アクセス権を指定します。 この一連の作業ができるコマンドおよびパラメータをご存じないでしょうか? また、逆にWeb共有の特定のエイリアスを削除するコマンドなど方法をご存知でしたら合わせて教えていただけますか。

    • 締切済み
    • CSS

専門家に質問してみよう