1 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:46.88 ] AccessのVBAに関する質問スレです ★1 質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンは必ず書きましょう。 ★2 AccessのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 AccessのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、 コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★5 わからなければとりあえず「マクロの記録」(Alt, T, M, R) 関連スレ Excel VBA 質問スレ Part23 toro.2ch.net/test/read.cgi/tech/1327763113/l50
2 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:43:50.48 ] くその山
3 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 08:46:53.06 ] まさかの3
4 名前:デフォルトの名無しさん [2012/02/13(月) 03:22:20.27 ] 期待あげ
5 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 00:33:06.69 ] 問題なく使えてるけど
6 名前:デフォルトの名無しさん [2012/02/24(金) 07:50:36.35 ] とりあえず使ってみたいんだけど、解説してるwebページ教えて
7 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 10:58:16.76 ] うぜえ
8 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 13:25:33.52 ] >>6 www.geocities.jp/cbc_vbnet/ accessvba.pc-users.net/ vba.officehp.com/ ググればいくらでも出てくる罠。
9 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 20:57:22.20 ] >>6 とりあえず程度なら解説見ないで作れよ。
10 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 16:43:20.41 ] すいませんが質問です。 XPから7へ移行したいのですがaccessのvba上で excelのマクロを操作してセルの中身を変えて上書き保存してたのですが、 今まで前面にexcelのメッセージで上書きしますか?的なメッセージが出てたのですが 7だとaccessが出っ放しでexcelがタスクに隠れてメッセージが前面に出てこないのです。 何かやり方ありませんか?ググり方すら分からない…アドバイス下さい;
11 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 16:49:39.47 ] >>10 ttp://oshiete.goo.ne.jp/qa/4876776.html
12 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 17:05:38.78 ] >>11 早々とありがとうございます。本当に嬉しい!! しかし、自分で作ったメッセじゃなくてデフォルトの置き換えますかってメッセなんです。 XPから7に変わると設定変えるんじゃなくてvbaに追加せんと駄目なんですかね…無知でスイマセン
13 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 17:46:46.30 ] >>12 Excelのマクロ実行中にExcelをアクティブウィンドウに出来ればおK。 試してないが、この辺が参考にならないかな? ttp://www.officepro.jp/excelvba/window/index2.html
14 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:32:47.13 ] すみません、フォームが開く順序は Open→Load→…が規定だと思いますが、 Loadが飛ばされる条件はどのような条件か ご存じの方いらっしゃいませんか?
15 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 11:20:11.27 ] HideしてShowするとLoadに飛ぶ
16 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 16:02:20.11 ] >>13 ありがとうございます。一度試してみます
17 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 09:45:47.59 ] すみません ADOで新規にブール型のフィールドをテーブルに作成する場合、 VBAではどうかくのでしょうか (テーブル).Columns.Append "XXXX", adBoolean だとエラーになってしまうんですが
18 名前:17 mailto:sage [2012/03/12(月) 10:52:54.08 ] すみません環境を書きます OS:Vista Ver:Access2010(accdbファイルを使用。実際のコードはExcel2007ファイルに記述)
19 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 14:16:24.17 ] DoCmd.RunSQL "ALTER TABLE (テーブル) ADD COLUMN XXXX BOOLEAN;"
20 名前:17 mailto:sage [2012/03/13(火) 01:56:43.81 ] 回答ありがとうございます ただ他のフィールド(adGUID・ adInteger・adVarWChar)は問題なく Appendできるので、SQL文ではなく、これらに合わせたADOXによる コードにしたいと思ってます んん、というかadBooleanのフィールドを追加するとtablesへのAppend時に エラーとなる原因がどうしても知りたいです 散々ググったのですが、結局実際にadBooleanのフィールドを追加している サンプルコードにはお目にかかれませんでした 何が原因なんだろう… adBooleanの時はAppendの他に何か処理が必要なんだろうか…
21 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 15:50:44.64 ] Office2010 64bit版を使ってるのだとしたら32bit版に入れ替えてみると良いかも。 そうじゃないとしたら、参照設定でバージョンの違うADOモジュールを試すとか。
22 名前:17 mailto:sage [2012/03/14(水) 01:05:25.66 ] 原因が分かりました 普段ACCESS使ってる人からは、当たり前やんけ!って怒られそうな話ですが アドバイス下さった方もいらっしゃるので報告しますと (テーブル).Columns.Append "XXXX",adBoolean が原因ではなく、その次に入れておいた次の文 (テーブル).Columns("XXXX").Attributes = adColNullable が原因でした ブール型フィールドには初期値(True)があり、Nullを設定できないのにNull許容を設定したせいで エラーになっていたようです 本やネットで情報漁って、ADOでEXCElからACCESSファイル作れてテーブルも作れるなら、ACCESS買わなくてもいいんじゃね? なんて思ってましたが、ソフト買って普段からいじって慣れておいた方かいいのかも
23 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 23:06:37.82 ] ADOのDynamicPropertyについて かなり詳細な解説が知りたいのですが、 なにか参考となるURLや書籍はありませんか?
24 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:33:03.28 ] Access初心者です。質問があります。 前任者のAccessで作られた業務ソフトを担当することになりました。 まずは全体を見通したいので、Basicのコードやコントロールのプロパティ、 イベントなど、すべての情報をテキストファイルに書き出したいです。 どうやったら良いのでしょうか? Access2003 です。 教えてください。
25 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:50:30.92 ] コードはともかくとして、プロパティなんかは 自分でそれをリストするプログラムを書けばいい。
26 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 05:39:40.85 ] VBAでそんなこと出来るんですね。 どこかのHPにソースが公開されていないかな〜 参考になるページなど、探して見ます。
27 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 21:28:12.01 ] >>26 ツールならこのへんか www.vector.co.jp/soft/win95/business/se397540.html www.vector.co.jp/soft/win95/business/se130222.html どっちもDAOとかCOMのAccess.Applicationオブジェクトで抜いてるだけだと思う マクロ多用なら一回VBA変換すると見やすいぞ
28 名前:26 mailto:sage [2012/03/25(日) 17:47:30.63 ] >>27 情報サン・クスコ☆
29 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:53:45.24 ] hosyu
30 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 00:22:57.54 ] Accessで同時利用の限界ってどれくらい? プログラム工夫すれば50人くらいは兵器?
31 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 13:07:20.08 ] 50人がそれぞれ日一回違う時間帯に読み書きするとかならぜんぜん平気かもしれないよ
32 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 11:59:42.32 ] WindowsXP Access2003 DoCmd.RunCommand acCmdSaveRecord の使いようがよくわかりません。 例えば テーブルA フィールド1〜3 についてフォームで値を入力できるようにしたとします。 フォームに入力して閉じるとテーブルのレコードは更新されています。 DoCmd.RunCommand acCmdSaveRecord を使うとフォームを閉じる前の時点でレコードが更新されるんでしょうか? しかしこの命令文を通過した後でテーブルを開いてみても更新されていませんでした。
33 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 13:16:55.86 ] 馬鹿には無理
34 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 15:30:07.48 ] >>32 テーブルAを表示させたメインフォームの中に同じテーブルAを表示させたサブフォームを置いて Private Sub 1_AfterUpdate() End Sub Private Sub 2_AfterUpdate() DoCmd.RunCommand acCmdSaveRecord End Sub と書け メインに表示されたフィールド1を変更して、フォーカスをフィールド2に移すとサブに表示された内容も変わるメインに表示されたフィールド2を変更して、フォーカスをフィールド3に移してもサブの内容は変わらない ただしどちらもメインフォームからサブフォームにフォーカスを移せば内容は変わる これでレコードがどういうタイミングでセーブされるか判るべ
35 名前:デフォルトの名無しさん [2012/05/17(木) 20:45:31.33 ] 人の手でデータ加工する過程はすべてVBAに置き換えられるのでしょうか?
36 名前:デフォルトの名無しさん mailto:sage [2012/05/18(金) 03:27:32.55 ] >>35 Access内でやっている限りは
37 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:18:15.14 ] import os import win32com.client MDBFILE = "test.mdb" if os.path.exists(MDBFILE): os.remove(MDBFILE) dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s" % MDBFILE adox = win32com.client.Dispatch("ADOX.Catalog") adox.Create(dsn) adodb = win32com.client.Dispatch("ADODB.Connection") adodb.Open(dsn) adodb.Execute("create table hoge (id counter primary key, c1 varchar(10));") adodb.Execute("insert into hoge (c1) values ('fuga');") adodb.Execute("insert into hoge (c1) values ('hage');") adodb.Close()
38 名前:デフォルトの名無しさん [2012/05/24(木) 11:34:52.22 ] VBAじゃないんだけどmdbファイルからSQLで指定テーブルのフィールド名を列挙するSQLを教えてくださ
39 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 11:40:53.57 ] >>30 バックエンドにMySQLを使うといったようなクラサバにすれば50人だろうが 100人だろうが行ける。
40 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 03:16:51.66 ] >>38 了解
41 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 23:17:09.33 ] >>38 import win32com.client adox = win32com.client.Dispatch("ADOX.Catalog") adox.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb" for t in adox.Tables: if t.Type != u"TABLE": continue print t.Name, t.DateCreated, t.DateModified for c in adox.Tables(t.Name).Columns: print c.Name, c.DefinedSize, c.Type