エクセルVBAでセキュリティカードのデータ管理を簡素化する方法

このQ&Aのポイント
  • VBAを使ってセキュリティカードのデータ管理を簡素化する方法について紹介します。セキュリティカードの導入を検討している場合、手作業での登録作業が面倒であり、VBAを活用することで登録を簡単に行うことができます。
  • 具体的な流れは以下の通りです。まず、CSVファイルとクリップボードにコードデータを保存します。次に、エクセルの管理表を開き、VBAプログラムを起動します。プログラムは自動的にCSVファイルのデータを読み込み、該当するセルにコードデータを割り当てます。最後に、該当したセルの横にクリップボードにコピーされているデータを貼り付けます。このようにすることで、手作業でのデータ管理作業を効率化することができます。
  • VBAを使ってセキュリティカードのデータ管理を簡素化する方法を紹介しました。手作業でのデータ管理作業が面倒である場合は、この方法を試してみてください。VBAを使うことで、登録作業を簡単に行うことができます。
回答を見る
  • ベストアンサー

エクセルでVBAを使ってセキュリティカードのデータ管理をしたい

いつもお世話になります。VBA初心者です。 会社でセキュリティカードの導入を検討しているのですが、カード内に2種類のコードがあり、それぞれ別のプログラムで読みこんだものを手作業で紐付けなければならないので登録が難しく、VBAである程度登録を簡素化できないかと考えて投稿いたしました。手作業で行う場合の流れは以下のとおりです。 (1)プログラムを立ち上げ、登録する個人の個人コードを手打ち入力した後にセキュリティカードをリーダーにかざす。 (2)その後「保存」ボタンをクリックすると、所定の位置にCSVファイルが保存される。 (3)別プログラムを立ち上げ、リーダーにカードをかざすと、もう一種のコードデータがクリップボードにコピーされる。 (4)エクセルの管理表(A列に個人コード、B列に個人名;重複なし)を開き、CSVファイルも開く。 (5)CSVファイルのデータを個人コードをキーにして、VLOOK等でC列の該当するセルに紐付ける。 (6)紐付けられた該当セルの横のセル(D列)にクリップボードに保存されているコードデータを貼り付ける。 という流れなのですが、クリップボードからデータを貼り付ける作業が手作業なので、間違える可能性が高いです。 そこで、VBAを使って以下のような作業にしたいのです。 (1)CSVファイルとクリップボードにコードデータを保存する。 (2)管理表のエクセルデータを立ち上げ、プログラムを起動する。 (3)プログラムで自動的にCSVファイルのデータを読み込み、該当するセル(C列)にコードデータを割り当てる。 (4)該当したセルの横(D列)にクリップボードにコピーされているデータを貼り付ける。 という流れにしたいのですが、やり方をご存知の方、ご教授ください。

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

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

レス付かないですね。それほど大変な課題でもないと思うんだけど。。 CSVファイルに不明点がいくつかあります。 CSVには個人コードと何か貼り付けるべきデータがあるものと仮定して書いてます。 クリップボードについては参照設定が必要です。参考URLを参照してください。 Sub Test() Dim myDO As MSForms.DataObject Dim fname As String Dim ClipCodeData As String Dim CodeData As String Dim PersonalCode As String Set myDO = New MSForms.DataObject With myDO .GetFromClipboard ClipCodeData = .GetText(1) End With Set myDO = Nothing 'csvを選択させるダイアログを開く 固定なパスに固定な名前でよいなら 'fname= "C:\xxx.csv"でもよい fname = Application.GetOpenFilename(FileFilter:="csvファイル,*.csv") If fname = "False" Then Exit Sub Application.ScreenUpdating = False Workbooks.Open (fname) 'コードデータを代入する どの程度のセルにわたっているのかが不明なため仮にA1とする PersonalCode = Range("A1") CodeData = Range("B1") Workbooks(Dir(fname)).Close savechanges:=False ThisWorkbook.Activate Application.ScreenUpdating = True 'A列から検索する Columns("A:A").Find(What:=PersonalCode, After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole, _ SearchOrder:=xlByRows, SearchDirection:=xlNext).Select 'CSVのコードデータとクリップボードのデータを貼り付ける Selection.Offset(0, 2) = CodeData Selection.Offset(0, 3) = ClipCodeData End Sub

参考URL:
http://www.moug.net/tech/exvba/0150091.htm
7-samurai
質問者

お礼

お手数をおかけします。 知らない技術がたくさんあるので勉強しつつ完成させていきたいと思います。 ありがとうございました。

その他の回答 (1)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

書き忘れましたが、初心者ということなので一応実装手順を補足します 1.管理票のエクセルに標準モジュールを追加し、VBEの参照設定を行います。 2.標準モジュールに記述したコードを書きます。 3.CSVから引っ張るべきデータを書き換えます。個人コードをPersonalCodeに、紐付けるべきデータをCodeDataに入れます。 4.ワークシートにボタンを追加してマクロを登録するなり、ショートカットキーに割り当てるなどします。 これで動くと思います

7-samurai
質問者

お礼

お礼が遅くなりまして申し訳ございません。 最初の回答を頂いた後、自分なりに理解につとめ、半日程度で目的のものを完成出来ました。 締め切るのが遅く、お気を遣わせてしまったようで申し訳ございません。 このたびは、ありがとうございました。

関連するQ&A

  • エクセルのマクロ(VBA?)でデータの取込と保存をしたいのですが?

    エクセルのマクロとVBAの違いもよくわかっていない素人ですが教えていただけると助かります。 ある値段情報AがテキストファイルまたはCSVファイルなどで保存してあり、それを1つずつ読み込み、エクセルのシート上のセルAに表示させる、それをマクロ?(プログラム)で、1つ目より2つ目のほうが高ければ、そのまま高いほうを表示させておき、安いほうは別のテキストファイルに書き込むようなことって可能ですか? つまり、処理するごとに、テキスト(CSV)のファイルからデータの読み込みと書き込みを行うようなことってできますか?もしできるのであれば、そのやり方について詳しく教えてください。詳しいホームページもあれば教えてください。よろしくお願いします。

  • ExcelのVBAでCSVを読み込むと通貨になる

    Excel2010のVBAでCSVファイルを読み込んで処理させたいのですが、読み込んだデータをExcelが勝手に別のデータに変えてしまうので困っています。 例えば、123,456というデータは、フィールドにカンマがあるので、CSVでは"123,456"となりますが、これを以下のようなVBAのコードで読み込ませると、書式が通貨として扱われてしまって、データも123456になってしまいます。文字列として読み込まれていれば正しいデータとして読み込まれるように思うのですが、文字列として読み込ませる方法が分かりません。正しく元のデータ123,456のまま読み込ませるにはどうすればいいのでしょうか。 なお、CSVの各フィールドにカンマやダブルクォーテーションが混在していると、各フィールドに分割する処理が複雑でよく分からないので、下記のコードのようにExcelの機能でCSVを各フィールドに分割される方法で読み込ませたいです。 よろしくお願いします。 Workbooks.Open Filename:= "file.csv"

  • エクセルVBA CSVファイルで保存方法

    エクセルのVBA初心者です。 VBAでコードを組んでデータ作成できるようにしました。 最後にそのデータをどのパソコンのディスクトップでもCSVファイルで 保存されるようにコードを組みたいと考えております。 教えて頂ければ幸いです。 宜しくお願い致します。

  • エクセルVBAでCSVファイルから取り込みたいのですが・・・

    CSVファイルのデータを取り込むコードを教えていただけないでしょうか。 「共有フォルダ」の中に「作業用.xls」と「090820.csv」があります。csvファイルは日によって名前が変わりますが、必ず一つしか入れないことにしています。 CSVファイルの1行目は見出しです。2行目以降がデータになっています。 A2からI列最終行を「作業用.xls」のsheet1のA6にコピー(取り込み)したいのですが、よろしくお願いします。

  • エクセルVBA:日付データの変換がうまくいかない2

    http://okwave.jp/qa/q7615238.html の続きです。 問題内容が変わってしまったので、改めて質問させていただきます。 困っているところは、日付のセルのデータ表示をyyyy/mm/ddに固定したいのですがうまくいきません。 前回返信頂いた内容を参考に頑張ってみたのですが、以下のような現象に陥りました。 (1)1回VBAプログラムを通すと、CSVファイルにyyyy/mm/ddの日付データが書き込まれる。 (2)【その後、csvファイルを閉じて、もう一度csvファイルを開くと、mm/dd/yyyyの形式に戻っている。】 (2)の現象がなぜ起きるのかわかりません。MSの仕様なのでしょうか? どうしようもないのでしょうか?

  • Excelで、開いたファイルを消したい

    Excel2000ですが、 デスクトップ上に保存したcsvファイルを開く ↓ 作業中のブックにシートを増やしそこに先ほど開いたcsvファイルを貼り付けてシート名を変更 ↓ 開いたcsvファイルを閉じる という作業ですが、VBAマクロにするとどういうプログラムになるのでしょうか?教えてください。

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。

  • エクセルVBAで CSVファイルからのデーター参照

    エクセル2000を使用しています。 CSVで社員リストを作成して、エクセル上の指定のセルに 氏名を入力すると、年齢、性別、入社日等が他のセル表示出来るように 指定のですが、VBAでやるとすれば、どの様なコードになるのでしょうか??  現在は、OPENイベントを使用して、エクセルの別のシートにCSVファイルの全ての内容を読み込んでいます。そしてMAINのシートではLOOKUPを使用しているのですが、ファイル起動時に時間が掛かり、困っています。 エクセルとCSVの間で直接、データーのやり取りをしたいのですが・・・。

  • EXCEL VBAについて

    VBAでCSVファイルをテンプレートのBBOKに読込むコードを 作り、CSVファイルから読込んだBOOK1データを集計する BOOK2を作成しています。 BOOK1・11/21・・・11/21・・・11/22・・・11/23と続きます      A     B     C      D 1  ID     店名   売上    日付 2 1104567   渋谷店  190,809   11/21 3 1102031   新宿店  209,808   11/21 4 1103450   横浜店  108,765   11/21 BOOK2・集計      A    B    C       D       E 1  ID   店名   11/21    11/22     11/23 2 1104567  渋谷店  190,809   203,487 3 1102031  新宿店  209,808   340,876 4 1103450  横浜店  108,765   547,627 ※BOOK1とBOOK2のIDの並び順は一致していません。 上記のBOOK1のデータをBOOK2に読込ませたいと考えています。 VLOOKUPやINDEX関数を使用しようかと考えたのですが、日付毎に ファイル名が違うのと、集計のファイルには外部参照をさせたくないと 考えています。 VBAで作成したいコードはBOOK1からBOOK2の日付のセルにIDを検索条件として日付毎のファイルを読込ませたいです。 フォームで日付を入力し、コピーするBOOK2のセルを指定後、BOOK1を選択するためにダイアログボックスを出したいです。 BOOK2のIDを検索条件としてBOOK1から一致する売上セルを抽出するコードだけでもわかれば何とか作成できそうなのですが、 ご教授いただけませんでしょうか?

  • クリップボードをクリアするVBAコマンド

    今、複数のCSVファイルを一枚のエクセルシートにまとめる マクロ(少しVBAを交えながら)作っています。 CSVファイルを開いて、データすべてをクリップボードにコピーしていく、、という作業の繰り返しマクロです。 1ファイルをシートに移した後、いったんクリップボードをクリアして、次のファイルを読み込みたいのですが、 クリアするコマンドがわかりません。 ご指導ください。