• ベストアンサー

アクセス 自動インポートマクロで

アクセス 自動インポートマクロで以下のようなものを作りました。 (1)テーブル「人事データ」をテーブル「人事データ(前回分)」としてコピー (2)エクセル「人事データ」をテーブル「人事データ」としてインポート (3)テーブル「人事データ」と「人事データ(前回分)」の不一致をクエリで抽出 (4)エクセルに出力 そこで、(2)の項目でインポートする際に、「人事データ040325」といったように後ろに日付をつけることはできますか? どこまでインポートしたか履歴を知りたいためです。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

マクロでもできますよ。 (3)の不一致クエリがあるのでインポートは「人事データ」で行った方がいいと思います。 (2)の後で のオブジェクトのコピーで新しい名前に ="人事データ" & Format(Date(),"yymmdd") とすれば、PCの日付の「人事データYYMMDD」のファイルができます。

konpati
質問者

お礼

できました! ありがとうございます!!

その他の回答 (5)

  • popokun
  • ベストアンサー率33% (1/3)
回答No.6

追記 Option Compare Database Option Explicit Private Sub cmdExe_Click() '↑プライベートサブ コマンドボタンの名前(cmdExe) をクリックした時って意味なんだよね。ようするにスタートしますよって事。 End Sub '↑エンドサブ ここまでが、コマンドボタン(cmdExe)をクリックした時に動く場所。ようするに終了ですよって事。 **************************************** ちなみに「モジュール」を呼び出す場合は↓ Public Function 実行() msgbox("終了") end Function ってモジュール1にあったと仮定して、コマンドボタンから呼び出すのは・・・。 Private Sub cmdExe_Click() call 実行 Exit Sub って感じでCallを使って呼び出す事になる。

konpati
質問者

お礼

いろいろありがとうございます! この機会にVBも勉強してみようと思います。

  • popokun
  • ベストアンサー率33% (1/3)
回答No.5

>コマンド1から40まで全てでてきました。 んーとね「コマンド0」ってコマンドボタンの名前なんだよね。だから新しく作ったコマンドボタン→プロパティの中に「その他」の「名前」と同じ場所に貼り付ければOK! わかりやすくするために普通コマンドボタンを作ったら 名前を付ける。俺の場合、「cmdExe」とかだね。 人によってマチマチではあるが試してみれば? 下にマクロの方法があるので、そちらでも良いし、、、 これからVBAも勉強しようかな?って考えてるなら 試してみるのも勉強になるよ。

  • popokun
  • ベストアンサー率33% (1/3)
回答No.3

あーあれだツールボックスの右上のコントロールウィザードをONにしてるだろ?それをOFFにするんだが、わかる? わかんなかったら↓ (1)フォーム→新規作成→デザインビュー。でフォーム出来た? (2)ツールボックス→一番右上にコントロールウィザードが凹んでない?(棒切れからツブツブが落ちてきてるようなアイコンだったと思うが。)それをOFF要するにクリックして凸にさせてくれ! (3)コマンドボタン貼り付け→さっきと同じで・・・三点リーダークリック→コードビルダ→OK (4)↓のような感じで出来た? Option Compare Database Option Explicit Private Sub コマンド0_Click() End Sub (5)そしたら「*****」の所に貼り付けて保存 Option Compare Database Option Explicit Private Sub コマンド0_Click() **************************************** End Sub (6)フォームをクリックして立ち上げたらコマンドボタンをクリックで終了。

konpati
質問者

お礼

コントロールウィザードはオフですよ。 それで、上記(4)のようなものがコマンド1から40まで全てでてきました。 一番下に貼り付けたのですが、フォームに戻ってクリックしてもおなじもの(コマンド1から40までの羅列)が表示されます。???

  • popokun
  • ベストアンサー率33% (1/3)
回答No.2

・・・もしかして、こういう事? フォームにコマンドボタン貼り付け→右クリック→プロパティ→「クリック時」の「・・・」を左クリックして、下記のVBAソースを貼り付ける。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel7, "TESTテーブル" & Format(Now(), "yymmdd"), "c:\TEST.xls" 'DoCmd.TransferSpreadsheet acImport = Excelデータ 'をインポートする時のお決り文句? 'acSpreadsheetTypeExcel7 = インポートするExcelのバ 'ージョンによって変更3~9位まで有ったような気がする。 '適当に試してくれ! '"TESTテーブル" & Format(Now(), "yymmdd") = テーブ 'ルの名前+日付を000000型にフォーマット 'c:\TEST.xls = Excelが置いてある場所(パスってやつ) 'Cドライブの下にTESTってExcelを置いてある。

konpati
質問者

お礼

ありがとうございます。 ですが、VBAが良くわからないので、お教えください! 上記、「クリック時」の「・・・」までできるのですが、その後は「コードビルダ」の選択で宜しいのでしょうか? 「コードビルダ」を開くと、コマンド1~40ぐらいまであり、どこにコードを入力したらいいのかわかりません。 オブジェクトのモジュール欄から新規作成でマクロを作成することはできますか?そこでマクロが作成できれば、「マクロビルダ」に組み込むことができるとおもうのですが。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

インポート後に、Rename メソッドを使ってテーブル名を 変更すればいいと思います。 DoCmd.Rename "人事データ" & Format(Now(),"yymmdd"), acTable, "人事データ"

konpati
質問者

お礼

ありがとうございます。 しかし、VBが良くわからなくできませんでした。

関連するQ&A

  • アクセス インポート規制

    アクセス 自動インポートマクロで以下のようなものを作りました。 (1)テーブル「人事データ」をテーブル「人事データ(前回分)」としてコピー (2)エクセル「人事データ」をテーブル「人事データ」としてインポート (3)テーブル「人事データ」と「人事データ(前回分)」の不一致をクエリで抽出 (4)エクセルに出力 そこで、(2)の際「人事データ」を同日に2度インポートしないように規制をかける方法はありますか?差分が出せなくなるためです。よろしくお願いします。

  • Access、マクロの最後に最適化を入れられる?

    Access2003を使用しています。 マクロの最後に最適化を組み込むことは可能でしょうか? マクロの内容は、 1、昨日のデータ抽出に使用した作業用テーブル内のデータを削除する 2、本日のデータをインポートしてくる 3、1で空にしたテーブルに、2のデータを追加クエリで流し込む 4、2でインポートしてきたデータ(テーブル)を削除する です。 この後、「5、データベースを最適化する」を入れてマクロを終わらせたいのです。 インポートしてくるテーブルは8個あり、1テーブルに20万を超すデータが入っているため、インポート、追加をやっているうちに、データベースの大きさが1,126,528KBにもなってしまいます。 この後、この大容量のテーブルを使って、大容量のテーブルを作成しているうちに・・・・データベースは更に大きくなってしまい困っています。 マクロの最後に「ここで一旦最適化」を入れられないでしょうか? このデータベースを使用するのは自分で使用するものでないため、「マクロ終了後ツールボタンで最適化する」ということが出来ません。 また、VBAはわからないので・・・出来ればマクロなどで対応できると助かります。 どなたか詳しい方、教えてください!

  • マクロによるインポート

    アクセス初心者です。仕事でデータベースを作っているのですが、簡単な物がようやく完成しそうなのですが・・・。だた1つ、マクロを使ったインポートが上手く作動しません。エクセルからアクセスのテーブルにインポートさせたいのですが、マクロでワークシート変換→エクセルからアクセスへの指示を入力し、パス自体も間違えてはいない様なのですが、インポート元のエクセルシートを開いた状態でしかテーブルが更新されません。閉じた状態でマクロを動かしても、エラーメッセージは出て来ないのですが、いざテーブルを開いてみても、インポートされていないのです。更新する前にデータが重ならない様に、テーブルを削除してから、新たにインポートさせる指示にはしてあります。エクセルを閉じた状態でインポートさせるにはどうしたら良いのでしょうか?分かりにい文章で申し訳ありません。どうかお願いします。

  • アクセスのマクロについて教えて下さい

    当方アクセスは素人です。 1つのテーブルを基に作ったクエリとフォームがあります。 このフォームの中にボタンを作り、1つの操作で クエリの条件指定をしたり、その抽出したデータをエクセルに出力したりできるようにしたいのですが どうすればいいのかわかりません。レポートにして出力、程度ならできるんですが…。 自分ひとりなら、クエリの画面で条件指定をして開き、ツール→エクセルに出力、とするところなんですが、 もっとド素人のおじさんに「誰でもボタンひとつでできるようにしておいてほしい」と言われて困っています。 助けてください。よろしくお願いします。m(__)m

  • アクセス インポートファイルの再インポートを防ぐ

    アクセス2003を使用しています。 アクセスにて、エクセルファイルをインポートしています。 既にインポートしたエクセルファイルを再度インポートしないように、再取込みを行おうとした場合、 「既に取り込んでいるファイルです」とエラーメッセージを表示させて、取込み防止を行おうとしています。 クエリの重複チェックを設定していたのですが、行き詰ってしまいました。 アクセスのテーブル先頭フィールドの日付データ(yyyy/mm/dd)でチェックしたいと思っています。 教えてください。よろしくおねがいいたします。

  • ACCESS のインポート

    ACCESS 2003をかじり始めた初心者です。 2つのテーブルから作ったクエリのデータにEXCELデータをインポートしようと思いましたが、インポートウィザードではインポート先としてテーブルを要求して来るようです。どうすれば良いのでしょうか。クエリをテーブルに変換する方法があればいいのかも知れませんが。

  • access2003のクリエでの抽出について

    エクセルデータをテーブルにインポートしました。 そのあと、クリエの「クロス集計~」に進み、行の抽出まではできるのですが、列の抽出で私は 4月、5月、6月という表にしたいのですが、日付まで入った表になります。 元々のエクセルデータが日付まで入っているからですか? 初めて使ったので、エクセルデータの項目を「年月日」と入力しているのを、「年月」に変更しましたがダメでした。 素人ですいません。 どうすれば、月ごとの集計表になりますか? あと、テーブルもインポートエラーになります。 アクセスの意味が分かっていないので機械的にやっています。 教えてください。困ってます。

  • Access のテーブル上で文字列の操作をしたい

    Excelからデータをインポートし、他のデータベースとリンクしているデータとの不一致データを抽出したいのですが、 Excelからインポートしたデータは ・全て大文字 ・文字の後に半角1スペース に対し、データベース側は ・全て小文字 ・文字の後ろにはスペースがない の為、全て不一致となってしまいます。 Excelからインポートしたデータをテーブル上で「文字を全て小文字に変換」し「不要なスペースの削除」をする事はできませんでしょうか? クエリ上で文字を小文字にする事はできましたが、変換した(テーブルにフィールドがない)データとクエリする事ができず煮詰まってしまいました。。 どなたか教えてください。。

  • エクセルからアクセスにインポートすると、エラーが出てしまいます。原因を教えていただけませんか。

    エクセルからアクセスへインポートしようとしたところ次のエラーメッセージが出てしまいました。 「貼り付け先の’T履歴’テーブルには’F29’フィールドがありません。」 エクセルのセル29列には、データが全くありません。28列までデータが入っています。 アクセスには29列ありますが、1行目はオートナンバーの履歴IDです。 アクセス側はマクロを使用しています。 エクセル側も入力シートからインポートシートに整理するのにマクロを使っています。 今までは問題なく出来ていたのですが、「取引先ID」という項目を双方に増やしてからエラーが出るようになりました。 こういう現象が起きる原因はどのようなことが考えられますか? F29っなんのことを指しているのでしょうか?

  • Access2003 検索用フォームでの検索がうまくいかない

    Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

専門家に質問してみよう