1read 100read
2013年17プログラム86: Access VBA 質問スレ Part1 (163) TOP カテ一覧 スレ一覧 2ch元 削除依頼
くだすれPython(超初心者用) その18 (440)
静的型付け言語の潜在開発生産性は今の100倍 (836)
【SICP】計算機プログラムの構造と解釈 Part3 (553)
【注意】STLの落とし穴【危険】 (968)
【Intel】OpenCV総合スレ 4画素目【画像処理】 (970)
【DI】Java Spring Frameworkを語るスレ 5.0 (157)

Access VBA 質問スレ Part1


1 :2012/02/06 〜 最終レス :2013/09/17
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
http://toro.2ch.net/test/read.cgi/tech/1327763113/l50

2 :
くその山

3 :
まさかの3

4 :
期待あげ

5 :
問題なく使えてるけど

6 :
とりあえず使ってみたいんだけど、解説してるwebページ教えて

7 :
うぜえ

8 :
>>6
http://www.geocities.jp/cbc_vbnet/
http://accessvba.pc-users.net/
http://vba.officehp.com/
ググればいくらでも出てくる罠。

9 :
>>6
とりあえず程度なら解説見ないで作れよ。

10 :
すいませんが質問です。
XPから7へ移行したいのですがaccessのvba上で
excelのマクロを操作してセルの中身を変えて上書き保存してたのですが、
今まで前面にexcelのメッセージで上書きしますか?的なメッセージが出てたのですが
7だとaccessが出っ放しでexcelがタスクに隠れてメッセージが前面に出てこないのです。
何かやり方ありませんか?ググり方すら分からない…アドバイス下さい;

11 :
>>10
ttp://oshiete.goo.ne.jp/qa/4876776.html

12 :
>>11
早々とありがとうございます。本当に嬉しい!!
しかし、自分で作ったメッセじゃなくてデフォルトの置き換えますかってメッセなんです。
XPから7に変わると設定変えるんじゃなくてvbaに追加せんと駄目なんですかね…無知でスイマセン

13 :
>>12
Excelのマクロ実行中にExcelをアクティブウィンドウに出来ればおK。
試してないが、この辺が参考にならないかな?
ttp://www.officepro.jp/excelvba/window/index2.html

14 :
すみません、フォームが開く順序は
Open→Load→…が規定だと思いますが、
Loadが飛ばされる条件はどのような条件か
ご存じの方いらっしゃいませんか?

15 :
HideしてShowするとLoadに飛ぶ

16 :
>>13
ありがとうございます。一度試してみます

17 :
すみません
ADOで新規にブール型のフィールドをテーブルに作成する場合、
VBAではどうかくのでしょうか
(テーブル).Columns.Append "XXXX", adBoolean
だとエラーになってしまうんですが

18 :
すみません環境を書きます
OS:Vista
Ver:Access2010(accdbファイルを使用。実際のコードはExcel2007ファイルに記述)

19 :
DoCmd.RunSQL "ALTER TABLE (テーブル) ADD COLUMN XXXX BOOLEAN;"

20 :
回答ありがとうございます
ただ他のフィールド(adGUID・ adInteger・adVarWChar)は問題なく
Appendできるので、SQL文ではなく、これらに合わせたADOXによる
コードにしたいと思ってます
んん、というかadBooleanのフィールドを追加するとtablesへのAppend時に
エラーとなる原因がどうしても知りたいです
散々ググったのですが、結局実際にadBooleanのフィールドを追加している
サンプルコードにはお目にかかれませんでした
何が原因なんだろう…
adBooleanの時はAppendの他に何か処理が必要なんだろうか…

21 :
Office2010 64bit版を使ってるのだとしたら32bit版に入れ替えてみると良いかも。
そうじゃないとしたら、参照設定でバージョンの違うADOモジュールを試すとか。

22 :
原因が分かりました
普段ACCESS使ってる人からは、当たり前やんけ!って怒られそうな話ですが
アドバイス下さった方もいらっしゃるので報告しますと
(テーブル).Columns.Append "XXXX",adBoolean
が原因ではなく、その次に入れておいた次の文
(テーブル).Columns("XXXX").Attributes = adColNullable
が原因でした
ブール型フィールドには初期値(True)があり、Nullを設定できないのにNull許容を設定したせいで
エラーになっていたようです
本やネットで情報漁って、ADOでEXCElからACCESSファイル作れてテーブルも作れるなら、ACCESS買わなくてもいいんじゃね?
なんて思ってましたが、ソフト買って普段からいじって慣れておいた方かいいのかも

23 :
ADOのDynamicPropertyについて
かなり詳細な解説が知りたいのですが、
なにか参考となるURLや書籍はありませんか?

24 :
Access初心者です。質問があります。
前任者のAccessで作られた業務ソフトを担当することになりました。
まずは全体を見通したいので、Basicのコードやコントロールのプロパティ、
イベントなど、すべての情報をテキストファイルに書き出したいです。
どうやったら良いのでしょうか?
Access2003 です。
教えてください。

25 :
コードはともかくとして、プロパティなんかは
自分でそれをリストするプログラムを書けばいい。

26 :
VBAでそんなこと出来るんですね。
どこかのHPにソースが公開されていないかな〜
参考になるページなど、探して見ます。

27 :
>>26
ツールならこのへんか
http://www.vector.co.jp/soft/win95/business/se397540.html
http://www.vector.co.jp/soft/win95/business/se130222.html
どっちもDAOとかCOMのAccess.Applicationオブジェクトで抜いてるだけだと思う
マクロ多用なら一回VBA変換すると見やすいぞ

28 :
>>27
情報サン・クスコ☆

29 :
hosyu

30 :
Accessで同時利用の限界ってどれくらい?
プログラム工夫すれば50人くらいは兵器?

31 :
50人がそれぞれ日一回違う時間帯に読み書きするとかならぜんぜん平気かもしれないよ

32 :
WindowsXP
Access2003
DoCmd.RunCommand acCmdSaveRecord
の使いようがよくわかりません。
例えば
テーブルA フィールド1〜3
についてフォームで値を入力できるようにしたとします。
フォームに入力して閉じるとテーブルのレコードは更新されています。
DoCmd.RunCommand acCmdSaveRecord
を使うとフォームを閉じる前の時点でレコードが更新されるんでしょうか?
しかしこの命令文を通過した後でテーブルを開いてみても更新されていませんでした。

33 :
馬鹿には無理

34 :
>>32
テーブルAを表示させたメインフォームの中に同じテーブルAを表示させたサブフォームを置いて
Private Sub 1_AfterUpdate()
End Sub
Private Sub 2_AfterUpdate()
 DoCmd.RunCommand acCmdSaveRecord
End Sub
と書け
メインに表示されたフィールド1を変更して、フォーカスをフィールド2に移すとサブに表示された内容も変わるメインに表示されたフィールド2を変更して、フォーカスをフィールド3に移してもサブの内容は変わらない
ただしどちらもメインフォームからサブフォームにフォーカスを移せば内容は変わる
これでレコードがどういうタイミングでセーブされるか判るべ

35 :
人の手でデータ加工する過程はすべてVBAに置き換えられるのでしょうか?

36 :
>>35
Access内でやっている限りは

37 :
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 :
VBAじゃないんだけどmdbファイルからSQLで指定テーブルのフィールド名を列挙するSQLを教えてくださ

39 :
>>30
バックエンドにMySQLを使うといったようなクラサバにすれば50人だろうが
100人だろうが行ける。

40 :
>>38
了解

41 :
>>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

42 :
Access2010(x86) Windows7(x64) PostgreSQL9
パススルークエリ+PostgreSQLの関数でナンバリング実装したんだが、
PostgreSQLの関数直接叩く →  1づつ進む
クエリをデータシートビューで開いてリロード → 1づつ進む
DLookup(結果フィールド, パススルークエリ名) → 2〜3づつ進む
ADOのExecuteでレコードセット取り出し → 2〜3づつ進む
になってしまう。(直接叩く&データシートビューで問題なしなので、VBAからの呼び出しの問題だと思う。)
試しにVBAの方にテスト用の関数(デバッグメッセージ出してダミーの値を返す)を作って
それを呼び出すパススルーじゃないクエリを作ってDLookUp実行してみたが、デバッグメッセージは1回しか出ない。
(Accessのパススルーじゃないクエリは1回の実行毎に1回しか開かれない?)
VBAからパススルークエリ実行する時は、1回の実行でも複数回(2〜3回)開かれるのか?
何とかして1回に1づつ進むように出来ないんだろうか・・・。

43 :
age忘れたorz

44 :
馬鹿には無理

45 :
>>44
d。
おまいのおかげで目が覚めた。
パススルークエリやめて、直接ADOからPostgreSQL開いてクエリ送ったら1づつカウントするわ。
助かったよ。

46 :
やれば出来る子

47 :
おまえみたいなやつが伸びる。



かもしんない。

48 :
Access2003  WinXP SP3 Firefox14.0.1です。
質問ですが、hyperlinkaddressプロパティというのがありますよね。
url文字列を代入すると、そのページをデフォルトのブラウザで
開いてくれるというやつ。
で、このurlのCGI何とかっていう文字列が入っていますので、
CGIで何らかのプログラムを起動しているんでしょうが、その時に、
ページが表示されないんです。
正確に言うと、デフォルトのブラウザがIE(自分の機械には6しか
入ってないんですが)だと、表示されるんですが、Firefoxだと表示できません。
でも、FFのURLボックスには灰色でうurlが表示されていて、
再読み込みボタンを押すと、表示します。
試しに、コマンドラインからurlをパラメータにして起動すると、表示します。
症状から見て、VBAの問題なのか、FFの問題なのか、判断しかねたので、
こちらでお聞きする次第です。
どなたか、詳しい方、アドバイをおねがいします。

49 :
「""」で囲んでみた?

50 :
”で囲むと、「”url”を開くことができません。指定したファイルを開くことができません」というエラーダイアログが出ます。

51 :
他の方法でFFにそのuriを送ってみる
ショートカットやコマンドライン、メールやワープロ、表計算ソフトから
同じ現象になると思うのでFFの仕様かバグ、設定のせいだとわかるのではないかと

52 :
500件ぐらいのDATAをどんどん追加していくと、3、4回で重くなってしまうんですけど、
どっから手を付けていいのやら分かりません。
ヒントください。

53 :
ソース貼れ

54 :
>>52
書き込みが遅くなるって事ですか?

55 :
VBAで既存のAccessデータベースを開いて、その中にあるクエリを実行して得られる「テーブル構造とデータ」をVBAの呼出し元にテーブルとしてインポートする方法教えてください。
[外部データ] タブの [インポート]からはうまくいくのですが、それをVBAで実行したいです。

56 :
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

57 :
>>55
DoCmd.TransferDatabase でできるんじゃね

58 :
ExcelのVBAについて勉強中です。
まだ初心者なので、VBAについてお詳しい方、
ExcelのVBAでのテーブル作成方法を教えてください。
データーベース中心で、入力画面からデーターをmoveしてくるものを作りたいです。


59 :
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()

60 :
Access初心者です .
現在、ある地区の人口増減表を作成しています。
そのデータを格納するためにAccessを使用しています。
1回のデータを入れるたびに〈男or女〉〈転入or転出〉で元々設定された数値から(男性人口数)(女性人口数)(総人口数)
が自動的ににカウントアップする(データシートビューに)ロジックを作成したいと思っています。
現在、「データシートビュー」「デザインシートビュー」まで作成したのですが、これからどのように手を加えていけばいいでしょうか?
クエリで演算フィールドなどを作成するのでしょうか。
Access自体が全くの初心者なので、できるだけ詳しく書いていただけると助かります。
是非よろしくお願いします。

61 :
馬鹿には無理

62 :
Microsoft Office Chart10 あるいは、OWC10というグラフを描くコンポーネントで、
クリックやダブルクリックのイベントを使えないですか?
クリックしたグラフの要素を得たいのですが。

63 :
使えますよ。

64 :
>>63
どのようにするのですか?
何か参考になるページなど教えてもらえませんか?

65 :
>>64
使えますよ。

66 :
>65
使えますね。

67 :
>>66
さっさと使え。

68 :
>>57
サンキュー助かった!
スマホで規制で返信できずすスマソ。

69 :
Access 2007のフォームで、オプショングループ内でトグルボタンを作成し、各トグルボタンをクリックすると、フォームのMe.RecordSourceにトグルボタンに対応させたクエリを設定するプログラムを書いています。
今のところ、機能は追加できたのですが、トグルボタンの表示がうまく更新されず、最初に押したボタンが引っ込んだままもどりません。
トグルボタンの表示を更新する方法はあるのでしょうか?

70 :
引っ込んだら戻らなくなるのがトグルボタンなんだけど

71 :
お前らここまでやるならC#でEXCELデータいじった方が簡単だろ

72 :
>>70
すみません。言葉足らずでした。
トグルボタン1を押した後、トグルボタン2や3を押しても、トグルボタン1が押されたままの表示になってしまいます。トグルボタンに割り当てたRecordSourceの切替え機能はちゃんと動いています。


73 :
トグルボタン1を押したあと
トグルボタン2を押して
トグルボタン3を押したら
トグルボタン2はどうなってますか

74 :
>>73
トグルボタン2の表示は押されていない状態です。
トグルボタン1が押されたままの表示になっています。

75 :
1がグループに入ってないな

76 :
馬鹿には無理

77 :
ACCESS2013はどうですか?

78 :
>>77
adpがつかえん
クラサバの旗降ってきた漏れの立つ瀬がない囧rz

79 :
ACCESS2013の利点は無いのかね!

80 :
Office2013にメリットなんて無いよ。
見た目がヌルヌルしてキモいけど、価格分の性能&利便性向上はない
Office使ってなくてOpen系で駄目なら、仕方ないから買ってやるか程度

81 :
無料バージョンアップできると聞いて2010買ったのに、発売の2/6までにインスコしないといかんかった囧rz
血も涙もないよ

82 :
おめでとうw

83 :
Win8でACCESS2010です。
Form_test.Filter = "分類 Not Like ""*あああ*"" And Not Like ""*いいい*"""
Form_test.FilterOn = True
コンボボックスの更新後処理イベントで上記のコードを走らせると、
「構文エラー:演算子がありません」と返されます。
初歩過ぎる質問ですんまそん。文法何か間違ってますでしょうか。

84 :
Form_test.Filter = "分類 Not Like ""%あああ%"" And Not Like ""%いいい%"""

85 :
たぶん
 "分類 Not Like ""*あああ*"" And 分類 Not Like ""*いいい*"""

86 :
>>84->>85
返信ありがとうございます。どちらも「演算子がありません」エラーは解消されませんでした。
ちなみに、↓は問題ないので、And Notがまずいのかなと思ったんですが、書式は問題なさそうですか・・・。
Form_test.Filter = "分類 Not Like ""*あああ*"""
Form_test.FilterOn = True
他の方法も探してみます。
ヘルプ開くとBingとかいうのが出て何も表示されないお・・・。2010使いづらいお(;´Д`)

87 :
Form_test.Filter = "Not (分類 Like ""*あああ*"" Or 分類 Like ""*いいい*"")"

88 :
>>87
これでいけました!ありがとうございます!

89 :
>>88
>>84は文法間違いあるけど、>>85はいけるはずだが、ほんとにダメだったのか?
先頭の のとこは無視しないとだめだぞ

90 :
"Not 分類 Like ""*あああ*"" And Not 分類 Like ""*いいい*"""

91 :
1.OS(64bit) + Office2010(64bit)
2.OS(64bit) + AccessRuntime2010(64bit)
3.OS(64bit) + Office2010(32bit)
4.OS(64bit) + AccessRuntime2010(32bit)
5.OS(32bit) + Office2010(32bit)
6.OS(32bit) + AccessRuntime2010(32bit)
※ OS:XP〜Windows8まで
上記のどの組み合わせでも動くようなAccessの実行ファイルは作成可能ですか?

92 :
>>91
http://tsware.seesaa.net/article/174598211.html

93 :
使用不可にいている3つのテキストボックスを、
チェックボックスをonにすると使用可能にするにはどうしたらいいでしょうか?

94 :
>>93
Private Sub チェックボックス_Click()
If Me.チェックボックス.Value = True Then
Me.テキストボックス1.Enabled = True
Me.テキストボックス2.Enabled = True
Me.テキストボックス3.Enabled = True
Else
Me.テキストボックス1.Enabled = False
Me.テキストボックス2.Enabled = False
Me.テキストボックス3.Enabled = False
End If
End Sub

95 :
>>92
参考にさせてもらいました。
ありがとうございます。
引き続き質問なのですが、
Windows8(32bit) + Access2010(32bit)環境で作成したファイルを
Windows8(64bit) + Access2010(32bit)環境で実行した場合に毎回ではないのですが、
レーダーチャートの目盛りが正常に表示されません。(-3E+259と表示される)
なお、表示しているデータは毎回同じものです。
ちなみに、Windows8(64bit) + Access2010(32bit)環境で作成したファイルを
Windows8(64bit) + Access2010(32bit)環境で実行した場合も同様でした。
この現象について何かご存知の方がいらっしゃいましたらお願いします。

96 :
>>94
もう少しシンプルなコードはないですか?
わがままですみません。

97 :
>>96
Private Sub チェックボックス_Click()
Me.テキストボックス1.Enabled = Me.チェックボックス.Value
Me.テキストボックス2.Enabled = Me.チェックボックス.Value
Me.テキストボックス3.Enabled = Me.チェックボックス.Value
End Sub

98 :
>>97
すばやいご回答ありがとうございました。
いろいろな書き方があるんですね。

99 :
Excelスレでも聞いたのですが、
以下のような時間の計算結果を出す関数として
0:00〜0:44 0:30
0:45〜1:14 1:00
1:15〜1:44 1:30
=IF(A1<"0:15"*1,"0:30"*1,MROUND(A1,"0:30"))
というアドバイスをしてくれた方がいましたが、
これに相当するコードが全くわかりません。
丸投げですがどなたか教えてくださいませ。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
バージョン管理システムについて語るスレ9 (334)
スレ立てるまでもない質問はここで 128匹目 (980)
アセンブラ初心者スレッド (439)
国産オープンソースDIコンテナSeasar2 その16 (512)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (448)
C/C++のライブラリ総合スレ (181)
--log9.info------------------
【CKB】Crazy Ken Band 52【ま、いいや】 (377)
【復活】バブルガムブラザーズ【再デビュー】 (179)
BEGIN vol.3 (904)
●○●OKAMOTO'S vol.3●○● (909)
◆Scoobie Do☆スクービードゥー☆No.21◆ (771)
【ロックンロール】THE BOHEMIANS★2【アイドル】 (387)
シカゴプードル/Chicago Poodle 【一】 (221)
ave;new/あべにゅうぷろじぇくと総合スレ 18 (563)
【原発反対】STANCE PUNKS 5【一発やらせろ】 (428)
GREAT3総合スレッド6 (887)
MY FIRST STORY Part1 (126)
FLiP 4 (662)
coldrain part2 (270)
髭(HiGE) part29 (200)
The Gospellers好き?135 (625)
ORANGE RANGE 総合スレ102* (269)
--log55.com------------------
柳家喬太郎 その37あたり
祇園甲部
【本場】阿波踊りスレッド11本目【徳島】
宮川町の今 その7
海老蔵はブログに物申す 〜part.6〜
☆今月の歌舞伎【IP表示ワッチョイ有】★其の二十九★
■□■ 国立劇場 第8棟 ■□■
歌舞伎の後援会 其の四