Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1676 / 2272 ツリー ←次へ | 前へ→

【5799】テキストボックスデータをテーブルに 05/8/9(火) 17:03 質問[未読]
【5803】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 10:04 発言[未読]
【5804】Re:テキストボックスデータをテーブルに 05/8/10(水) 10:22 質問[未読]
【5806】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 11:28 回答[未読]
【5809】Re:テキストボックスデータをテーブルに 05/8/10(水) 11:48 質問[未読]
【5810】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 12:47 回答[未読]
【5814】Re:テキストボックスデータをテーブルに 05/8/10(水) 14:49 質問[未読]
【5815】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 15:00 回答[未読]
【5816】Re:テキストボックスデータをテーブルに 05/8/10(水) 15:08 質問[未読]
【5817】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 15:36 回答[未読]
【5819】Re:テキストボックスデータをテーブルに 05/8/10(水) 16:10 質問[未読]
【5820】Re:テキストボックスデータをテーブルに 小僧 05/8/10(水) 16:46 発言[未読]
【5821】Re:テキストボックスデータをテーブルに 05/8/10(水) 17:37 質問[未読]
【5823】Re:テキストボックスデータをテーブルに 小僧 05/8/11(木) 9:21 発言[未読]
【5824】Re:テキストボックスデータをテーブルに 05/8/11(木) 10:55 質問[未読]
【5825】Re:テキストボックスデータをテーブルに 小僧 05/8/11(木) 11:35 回答[未読]
【5826】Re:テキストボックスデータをテーブルに 05/8/11(木) 11:51 お礼[未読]
【5827】Re:テキストボックスデータをテーブルに 小僧 05/8/11(木) 13:17 発言[未読]
【5837】Re:テキストボックスデータをテーブルに 05/8/11(木) 16:16 質問[未読]
【5841】Re:テキストボックスデータをテーブルに 小僧 05/8/11(木) 17:57 発言[未読]
【5843】Re:テキストボックスデータをテーブルに 05/8/12(金) 9:38 質問[未読]
【5845】Re:テキストボックスデータをテーブルに 小僧 05/8/12(金) 10:11 発言[未読]
【5846】Re:テキストボックスデータをテーブルに 05/8/12(金) 10:43 質問[未読]
【5848】Re:テキストボックスデータをテーブルに 小僧 05/8/12(金) 10:54 回答[未読]
【5849】Re:テキストボックスデータをテーブルに 05/8/12(金) 11:58 お礼[未読]

【5799】テキストボックスデータをテーブルに
質問    - 05/8/9(火) 17:03 -

引用なし
パスワード
   フォームAにテキストボックス1があります。テキストボックス2は消費税をつけるために新しく作りました。ボックス2の%をつける設定はでき、あとはそのボックス2のデータをエクセルにエクセルにおとすため、まずテーブルにそのデータをおとさないといけないという状況です。
テーブルから出ないとエクセルに自動的に変換というのはできないと本で読んだことがあります。

ボックス2のデータをテーブルにおとすための設定方法を教えて下さい。

【5803】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/10(水) 10:04 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>テーブルから出ないとエクセルに自動的に変換というのはできないと本で
>読んだことがあります。

テーブルに格納しなくても Excel にエクスポートはできますよ。
ただ、テーブル(またはクエリ)があると「TransferSpreadsheet」メソッドで
楽にエクスポートができます。

>ボックス2のデータをテーブルにおとすための設定方法を教えて下さい。

上にも書きましたが、テーブルでなくクエリを使うのが良いと思います。
金額のフィールドに0.05を掛けた「消費税」フィールドを作ったクエリを作成し、
クエリをエクスポートするのが一般的だと思われます。

【5804】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 10:22 -

引用なし
パスワード
   ▼小僧 さん:
成る程、ありがとうございます。
>
>>ボックス2のデータをテーブルにおとすための設定方法を教えて下さい。
>
>上にも書きましたが、テーブルでなくクエリを使うのが良いと思います。
>金額のフィールドに0.05を掛けた「消費税」フィールドを作ったクエリを作成し、
>クエリをエクスポートするのが一般的だと思われます。

と書いてくださったので、クエリをつくってみました。

たとえばテキストボックス"数値"になんらかの数を入力して、それに0.05をかけてボタンをクリックしたらエクセルに・・という風にするには
1.数値クエリを作って条件に0.05かければいいんですよね?
2.ボタンの条件としてはクリック時に式ビルダで、Form![フォーム名]![数値]= イコールの後にクエリを書くんですか?なんてかいたらいいのでしょうか?
式ビルダやマクロ等が全くわからないため、かなりわかりずらいしつもんですが教えて下さい_(_^_)_

【5806】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 11:28 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

[#5801]テキストボックスからエクセルに
http://www.accessclub.jp/bbs/wforum2.cgi?mode=allread&no=35358&page=0
http://www.accessclub.jp/bbs/wforum2.cgi?mode=allread&no=35329&page=0

質問が似てますが同じ方でしょうか。(間違っていたらすみません。)
もしそうでしたらあちらの掲示板はマルチポスト(複数の掲示板に同じ内容の
投稿をする事)が禁止なので、あちらを削除するか解決済みにして下さいね。


>たとえばテキストボックス"数値"になんらかの数を入力して、それに0.05を
>かけてボタンをクリックしたらエクセルに・・という風にするには

この動作をする際に、テーブルに値を書き込むかどうかがまずポイントになります。
もし、履歴データとしてAccess側に保持しておきたい値でしたら

1) テーブルに保存。
2) 保存したテーブルを元にクエリを作成。
3) Excel に出力。

の3ステップで行うことになりますし、必要ないのでしたらいきなり 3) が可能です。

桜 さんの状況によって VBA で組むコードが変わりますよ。

【5809】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 11:48 -

引用なし
パスワード
   ▼小僧 さん
こんにちは。私ではないですね。。誰でしょうか?
確かににてます・・


履歴データとしてAccess側に保持しておきたいので、

1) ボタンをクリックしたらテーブルに保存。
2) 保存したテーブルを元にクエリを作成。
3) Excel に出力。

の3ステップで行うようにしたいです。

宜しくお願いいたします_(_^_)_

【5810】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 12:47 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

テーブル「T_金額」
SEQ : オートナンバー型
金額: 通貨型

フォーム(適当な名前で…)
テキストボックス: txt金額
コマンドボタン : 実行

を用意してください。

Private Sub 実行_Click()
'要参照設定 Microsoft DAO x.x Object Library
Dim SQLCode As String
Dim XName As String
Dim QD As DAO.QueryDef

  XName = "C:\Test1.xls" 'Excel のフルパスを入れる

  SQLCode = "INSERT INTO T_履歴(金額) VALUES (" & Me.txt金額 & ")"
  DoCmd.RunSQL SQLCode
  
  SQLCode = "SELECT T_履歴.SEQ, T_履歴.金額, " _
      & "CCur([金額]*0.05) AS 消費税 FROM T_履歴;"
  
  Set QD = CurrentDb.CreateQueryDef("Q_金額", SQLCode)
  
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_金額", XName

  If MsgBox("クエリを削除しますか?", vbYesNo) = vbYes Then
    DoCmd.DeleteObject acQuery, "Q_金額"
  End If
End Sub

このままのコードですと、例えば
・「txt金額」に値が入っていない
・既にクエリ「Q_金額」が存在している

等の場合エラーになりますので、
それぞれにエラーが出ない様な処理を付け加えなければいけません。

【5814】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 14:49 -

引用なし
パスワード
   ▼小僧 さん:
やりました!でも・・
コンパイルエラー
ユーザ定義型は定義されていません。

とエラー発生です。

>Dim QD As DAO.QueryDef

 ↑がどうやら間違っているみたいで、

  XName = "C:\Test1.xls" 'Excel のフルパスを入れる


   ↑これを元に作成したのが、

 XName = "C:\progra"1\micros"2office\excel.exe

と入力しましたが字が真っ赤です。フルパス名とは上記のように記入するのではないのですか?

【5815】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 15:00 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>ユーザ定義型は定義されていません。
>>'要参照設定 Microsoft DAO x.x Object Library

という事で…。

コードが出ている画面で、[ツール] → [参照設定] にて、

Microsoft DAO x.x Object Library を探してチェックして下さい。
x.xは数字になっていますが、恐らく 3.6 があると思います。
(できるだけ数字の大きいのを選んでください)


> XName = "C:\progra"1\micros"2office\excel.exe

XName は出力のために使うエクセル名です。

Cドライブ直下に「AAA.xls」という名前で作るのでしたら
  XName = "C:\AAA.xls"

現在のAccessが入っているフォルダと同じところでしたら、
  XName = CurrentProject.Path & "\AAA.xls"

という感じですね。

【5816】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 15:08 -

引用なし
パスワード
   ▼小僧 さん:
成る程ーーー。小僧さんすごいっす。

ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

ちなみにSEQ : オートナンバー型にと小僧さんはおっしゃいましたが、オートナンバーでは駄目なので、テキスト型にしてあるんです。

これは関係ありますか?

またテキスト型にした場合なにかコードの中身は変わるのですか?

【5817】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/10(水) 15:36 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

デバッグ中や、ステップインの状態(コード実行中)ではないでしょうか。
エディタ(コードを書く画面)を開いてすぐでも選べませんか?

>ちなみにSEQ : オートナンバー型にと小僧さんはおっしゃいましたが、
>オートナンバーでは駄目なので、テキスト型にしてあるんです。
>これは関係ありますか?
>
>またテキスト型にした場合なにかコードの中身は変わるのですか?

テキスト型だとちょっと面倒になるので、数値型でいかがでしょう。
そして、1個目の SQL がちょっと変更になります。

> SQLCode = "INSERT INTO T_履歴(金額) VALUES (" & Me.txt金額 & ")"
  SQLCode = "INSERT INTO T_履歴(SEQ, 金額) " _
      & "VALUES (" & DMax("SEQ", "T_履歴") + 1 & "," & Me.txt金額 & ")"

【5819】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 16:10 -

引用なし
パスワード
   えーーっとですね〜実は数値とか言っておきながら実はあれは例として教えて頂いてたもので実際はアルファベットも数字もごちゃまぜのものなんです。だからテキストしか駄目なのかな?って。
メモでもいけそうですが、どちらが簡単ですか?

【5820】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/10(水) 16:46 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>実際はアルファベットも数字もごちゃまぜのものなんです。

了解です。テキスト型でいきましょう。
問題はこれがどこから作られるかなのですが…。

元のフォームに「txt金額」以外に SEQ に入れるための
テキストボックスか何かがあるのでしょうか?

>ツールを開いたところ参照設定がクリックできないようになっておりまして・・・

こちらは大丈夫でしたでしょうか?

【5821】Re:テキストボックスデータをテーブルに
質問    - 05/8/10(水) 17:37 -

引用なし
パスワード
   ▼小僧 さん:
はい、小僧さんの言うとおりあげなおししたら参照設定はできました。


>元のフォームに「txt金額」以外に SEQ に入れるための
>テキストボックスか何かがあるのでしょうか?
>
ないと思われます・・

【5823】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/11(木) 9:21 -

引用なし
パスワード
   ▼桜 さん:
おはようございます。

状況がよく解らないのですがテーブルに値を格納する際に、
識別できるような値をつけるために「オートナンバー型」を
作ってください、という事だったのですが…。

当方には 桜 さんの作られたフォームが見えるわけではありませんし、
何故オートナンバー型がだめなのかも解りません。

>アルファベットも数字もごちゃまぜのものなんです。

と言われましてもこれがどこから出てきたのかも解っていません。

当方に解っているのは

>フォームAにテキストボックス1があります。テキストボックス2は消費税をつけ>るために新しく作りました。

という事だけなのですが…。
もう一度状況を具体的に説明して頂けると助かります。

【5824】Re:テキストボックスデータをテーブルに
質問    - 05/8/11(木) 10:55 -

引用なし
パスワード
   はい、では・・
分かりずらくてすいません。

今までのを全部なしにして聞いてください。
テーブル:銀行本店−フィールド:本店名
                本店ID(英数字)
     銀行支店−フィールド:支店名                                  支店ID(英数字)
     IDテーブル−フィールド:ID

フォーム:銀行 

     テキストボックス:本店名
              本店ID (本店名を入力→本店IDが出力)
              支店名
              支店ID (支店名を入力→支店IDが出力)
              ID(本店IDと支店IDを合わせたもの)

      コマンドボタン:実行

IDを作るためにIDのコントロールソースに本店ID&支店IDを設定

ここまでできました。

実行ボタンを押すとテキストボックスIDのみがIDテーブルに表示されるように設定したいのです。
マクロでもVBAを使ってでもいいのですが・・・


 

【5825】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/11(木) 11:35 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>今までのを全部なしにして聞いてください。
>実行ボタンを押すとテキストボックスIDのみがIDテーブルに表示されるように設定したいのです。

この動作だけでしたら作りやすいのですが、
IDテーブルに先ほど言っていた「SEQ」フィールドみたいなものが存在した方が
後々の事を考えると良いと思うのですが…。(管理番号みたいなものです)

まぁ、そのままですと、

Private Sub 実行_Click()
Dim SQLCode As String
  SQLCode = "INSERT INTO IDテーブル(ID) VALUES ('" & Me.ID.Value & "')"
  DoCmd.RunSQL SQLCode
End Sub

で実現できそうです。

【5826】Re:テキストボックスデータをテーブルに
お礼    - 05/8/11(木) 11:51 -

引用なし
パスワード
   すごいです!!有り難うございます。

余談ですが、今のやり方をマクロではできないんですか?

また、どうやってべんきょうされてるんですか?
私はかなりの初心者です・・

【5827】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/11(木) 13:17 -

引用なし
パスワード
   ▼桜 さん:
マクロでは
SQLの実行
SQLステートメント:
INSERT INTO IDテーブル(ID) VALUES (Forms![フォーム名].[ID])

でいかがでしょうか。

>また、どうやってべんきょうされてるんですか?

自分がAccessを始めた頃は今の様にインターネットが発達していなかったので
Helpとの戦いでしたね。

最近は回答者として色々な事例を参考に検証をしていますので
それが勉強になっていますね。

【5837】Re:テキストボックスデータをテーブルに
質問    - 05/8/11(木) 16:16 -

引用なし
パスワード
   小僧さん・・すいませんが、もう一つ教えて下さい。
そのIDテーブルを実行ボタンを押すことによって追加はされましたが、追加され、かつ、テーブルがエクセルに・・って事はできるんですか?

【5841】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/11(木) 17:57 -

引用なし
パスワード
   ▼桜 さん:
こんにちは。

>テーブルがエクセルに・・って事はできるんですか?

VBA で行うのでしたら「TransferSpreadsheet」メソッドを
マクロで行うのでしたら「ワークシート変換」が使えます。

Excel シートの指定した場所に(Sheet1 の A5 のセルにとか…)
になると複雑な処理が必要になってきますね。

(過去ログを「オートメーション」で検索を掛けるとでてきます)

【5843】Re:テキストボックスデータをテーブルに
質問    - 05/8/12(金) 9:38 -

引用なし
パスワード
   おはようございます。またまたすいません。。
そのフォームの実行ボタンを押すとテキストボックスIDがIDテーブルに登録されるように教えていただきましたが、それとプラスしてその実行ボタンを押すとIDテーブルからエクセルシートが開くまで設定したいのです。
 
できますでしょうか?

【5845】Re:テキストボックスデータをテーブルに
発言  小僧  - 05/8/12(金) 10:11 -

引用なし
パスワード
   ▼桜 さん:
おはようございます。

>そのフォームの実行ボタンを押すとテキストボックスIDがIDテーブルに
>登録されるように教えていただきましたが、
>それとプラスしてその実行ボタンを押すとIDテーブルから
>エクセルシートが開くまで設定したいのです。

マクロで行っているのでしたら、先ほど提示させて頂いた「ワークシート変換」です。
同じマクロの中に

アクション
SQLの実行
ワークシート変換

の順に記述すればいけると思うのですがいかがでしょうか?

【5846】Re:テキストボックスデータをテーブルに
質問    - 05/8/12(金) 10:43 -

引用なし
パスワード
   ▼小僧 さん:
実行コマンドボタンクリック時イベントで早速やらせていただきました!が、実行ボタンを押すと

SQLステートメントが正しくありません。'DELETE','INSERT','PROCEDURE','SELECT',または'UPDATE'を使用してください。

とエラーがでます。対処法を教えてください_(_^_)_

また、先ほどはクリック時のイベントにコードビルダを設定していましたが、ご指示がでたので変更しました。そこでもう一つご質問ですが、マクロのSQLの実行=コードビルダで先ほど設定したものと同じものということですか?


>▼桜 さん:
>おはようございます。
>
>>そのフォームの実行ボタンを押すとテキストボックスIDがIDテーブルに
>>登録されるように教えていただきましたが、
>>それとプラスしてその実行ボタンを押すとIDテーブルから
>>エクセルシートが開くまで設定したいのです。
>
>マクロで行っているのでしたら、先ほど提示させて頂いた「ワークシート変換」です。
>同じマクロの中に
>
>アクション
>SQLの実行
>ワークシート変換
>
>の順に記述すればいけると思うのですがいかがでしょうか?

【5848】Re:テキストボックスデータをテーブルに
回答  小僧  - 05/8/12(金) 10:54 -

引用なし
パスワード
   ▼桜 さん:

こんにちは。

とりあえずやる → NG → 質問 でなく、
今まで提示させて頂いたコード、マクロを参考にして自分なりの工夫もしてみて下さいね。

コードの場合:
Private Sub 実行_Click()
Dim SQLCode As String
Dim XName As String

  XName = "C:\Test1.xls" 'Excel のフルパスを入れる

  SQLCode = "INSERT INTO IDテーブル(ID) VALUES ('" & Me.ID.Value & "')"
  DoCmd.RunSQL SQLCode

  DoCmd.RunSQL SQLCode
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "IDテーブル", XName

End Sub

マクロの場合:
アクション
SQLの実行
   SQLステートメント:INSERT INTO IDテーブル(ID) VALUES (Forms![フォーム名].[ID])

ワークシート変換
   変換の種類    :エクスポート
   ワークシートの種類:Microsoft Excel 8-10
   テーブル名    :IDテーブル
   ファイル名    :C:\Test2.xls
   フィールド名の設定:はい

【5849】Re:テキストボックスデータをテーブルに
お礼    - 05/8/12(金) 11:58 -

引用なし
パスワード
   はい、ごめんなさい(T_T)

その通りですね。

がんばってみます。

1676 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078248
(SS)C-BOARD v3.8 is Free