質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

2627閲覧

Accessにデータを追記する方法

cerophan

総合スコア15

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/06/10 22:59

編集2020/06/10 23:04

Accessで今後データを追記していく件で悩んでいます。
誰でも簡単に追記できることが目標です。

●追記するデータについて
他のアプリから行ごとコピペして持ってくるデータ。
EXCELに貼り付けるときちんと項目ごとに列が別れる。
行が複数に渡る(一気に複数データを貼り付けたい)ことがある。

●悩んでいること
ACCESSに直接貼り付けようとしたが、貼りつかない。
データ型が違う問題あり。(列ごとにACCESSで設定しているため)
また、Access上、コードを少し短く(末2桁を切る)表示するようにしている項目がある。

●解決法?
EXCELのVBAで変形しながらエクスポートするのが良いのかなとぼんやり思っているレベルですが、まだAccessとExcelの併用が好ましいのか、よくわかっていないので他にもっと良い方法があるのか悩んでいます。
また、そもそも上記のようなことがExcelVBAで可能かわかっていません。

●質問したいこと
やりたいことに対してExcelVBAが良さそうかどうか。他に方法があるか。
データの型についてはVBAでエクスポートする際にAccessにあわせないと、うまくいかないのでしょうか。因みに2桁短く表示している件は、最悪全て切り捨てても良いと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cerophan

2020/06/10 23:04 編集

本文に追記したため削除
hatena19

2020/06/11 00:27

> 他のアプリから行ごとコピペして持ってくるデータ。 これをテキストファイルにペーストしたらどのようなデータになっているか質問に追記してもらえますか。 例えば、タブ区切りテキストになっているなら、AccessのVBAだけで取り込むことは可能です。
cerophan

2020/06/11 03:23

タブ区切りになっていました。AccessのVBAのほうがおすすめなんですね。勉強してみます。 ところで、下2桁を消す問題が未だにモヤっとしています。 できるだけ消したくないと思うようになりました。 やはり一通り洗い出して、別のテーブルを作る方法がよいのでしょうね。
guest

回答2

0

ベストアンサー

クリップボードのデータはタブ区切りのテキストのようですので、とりあえずクリップボードから各列のデータを取り出すコード例を提示しておきます。

vba

1Public Sub GetClip() 2 Dim cbText As String 3 With New MSForms.DataObject 4 .GetFromClipboard 'クリップボードのデータをDataObjectに格納する 5 cbText = .GetText 'クリップボードのテキストを取得する 6 End With 7 8 9 Dim aryData As Valiant 10 aryData = Split(cbText, vbTab) 'クリップボードテキストをタブで区切って配列にする。 11 12 Dim data As Variant 13 For Each data In aryDate 14 Debug.Print data 15 Next 16End Sub

「Microsoft Forms 2.0 Object Library」に参照設定する必要があります。詳細は下記を参考に。
【ExcelVBA入門】クリップボードを使ったデータの設定・取得方法とは

クリップボードのデータはタブ区切りで1行のみという前提です。複数行ある場合は、Splitで改行で区切った配列にして、さらにタブで区切った配列にするという2重ループにします。

データ型が違う問題あり。(列ごとにACCESSで設定しているため)

また、Access上、コードを少し短く(末2桁を切る)表示するようにしている項目がある。

上記で各列のデータは取得できますので、データ型は変換関数で変換したり、末2桁を切るのはLeft関数、Len関数で可能です。

これをヒントにできるところまでトライしてください。

投稿2020/06/11 03:59

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cerophan

2020/06/11 08:23

大変参考になりました。トライしてみます。この件はこれから必須となりますが、やはりそもそもの根本の全体的な設計を見直す必要がある気がしてしました。 また別の質問を立ち上げることになりそうです。
guest

0

ACCESSのVBAを利用してEXCELをACCESS上に取り込んで処理する方法もあります。
先ずはVBAを勉強されることをお勧めします。

投稿2020/06/10 23:30

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cerophan

2020/06/11 08:23

勉強していきます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問