ExcelファイルをAccessで管理する その3

記事
ビジネス・マーケティング

AccessでExcelを操作する


AccessでExcelデータを扱う場合、イメージしやすいのはデータのインポートだと思います。

実際にExcelシートとAccessテーブルは構造が似ているので、データを移行させるのは簡単です。

Accessのテーブルを全選択して「コピー」してExcelに貼り付けることができます。(データはダミーです)

スクリーンショット 2024-08-26 200116.jpg

左上の全選択ボタンをクリックして「コピー」

スクリーンショット 2024-08-26 200141.jpg

Excelシートに貼り付け

あたかもExcel同士のように簡単にデータを移動できます。
逆にExcelシートをコピーしてAccessに貼り付けるのも同じ手順で可能です。

お手元のExcelシートをAccessにコピペするだけで、データベースは完成します。

このように整ったデータ、つまり「正規化」されたデータはAccessで扱うことができるので是非Excelから移行することをお勧めします。
Accessであれば数十万件のデータがあっても動作が遅くなるようなことはありません。
「正規化」について学ぶとデータベースの理解が早まりますので、Accessがなかなか理解できないという方は、一度Accessから離れて「正規化」について学んでみてください。

さてAccessでExcelデータを扱うことができることは理解できたと思いますがもう少し別の視点で考えてみます。


AccessでExcelのセルにデータを書き込む

先ほどの例ではデータを丸ごとやり取りすることができるのが分かりました。

 今回のテーマではAccessのテーブルに保存された100名の従業員データをExcelの人事評価表に反映する方法を検討しています。

つまりAccessのテーブルデータをExcelのシートの反映したいということです。

スクリーンショット 2024-08-26 202338.jpg

Accessのテーブルにある「所属」「役職」「氏名」がExcelの各セルに反映されて保存できればExcelでの作業時間がかなり短縮できそうです。
3480パソコンの前で満面の笑みを浮かべる一般人女性.png

人事評価表だけでなく年末調整の書類など、Excelで作成した書類に従業員の名前や住所を入力して配布したい場合など応用次第でかなり使えそうですね。


人だけでなく製品やサービスなど応用次第


印刷するために作成した手の込んだレイアウトのExcelの必要な部分にだけ
Accessからデータを書き込むことが出来れば仕事の幅が広がりそうな気がしませんか?

 VBAコードを実行中…

 Excelファイルが100個できました。流石にファイルを100個作るには数分かかりますが、手作業であれば1日では終わらないかもしれません。
何より入力ミスが発生するのは必至でしょう。

スクリーンショット 2024-08-26 204253.jpg

一番上の「あかぎ」さんのExcelファイルを開いてみます。

スクリーンショット 2024-08-26 203830.jpg

ちゃんとデータが反映されていますね。
スクリーンショット 2024-08-26 204001.jpg

当然間違いも発生しません。


computer_couple.png
「こんなことが出来るんなら、今やってる資料はもっと早く効率的に作れるんじゃないかな!」
「確かにそうね!」


興味を持たれた方は、是非ご連絡ください。
なにか閃いた方は、必ず効率化の道があると思います。

今回の作業は少し専門的なVBAコードが必要ですが、興味のある方は参考にしてみてください。

Excelのマクロを使用している方ならすぐ理解できると思いますが、AccessでExcelのオブジェクトを作成して100人分の処理をしているだけです。
500人でも1000人でも同じことができるのがプログラミングの強みですね。

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

    Dim rst As DAO.Recordset
    Dim dbs As DAO.Database
    Dim fName As String
    Dim i As Integer

    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("Sheet1")

    Do Until rst.EOF

                Set xlApp = CreateObject("Excel.Application")
                Set xlBook = xlApp.Workbooks.Open(CurrentProject.Path & "\人事評価シート.xlsx")
                Set xlSheet = xlBook.Sheets(1)

                xlSheet.Range("A4") = rst!所属
                xlSheet.Range("B4") = rst!役職
                xlSheet.Range("C4") = rst!名前

                fName = CurrentProject.Path & "\" & rst!ふりがな & "_評価シート_" & Format(Now, "yymmddhhnnss") & ".xlsx"

                xlApp.ActiveWorkbook.SaveAs FileName:=fName
                xlApp.Quit

                Set xlSheet = Nothing
                Set xlBook = Nothing
                Set xlApp = Nothing

        rst.MoveNext

        Loop 









サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら