Access VBA 質問スレ ..
[2ch|▼Menu]
2:デフォルトの名無しさん
12/02/09 00:43:50.48
くその山

3:デフォルトの名無しさん
12/02/10 08:46:53.06
まさかの3

4:デフォルトの名無しさん
12/02/13 03:22:20.27
期待あげ

5:デフォルトの名無しさん
12/02/24 00:33:06.69
問題なく使えてるけど

6:デフォルトの名無しさん
12/02/24 07:50:36.35
とりあえず使ってみたいんだけど、解説してるwebページ教えて

7:デフォルトの名無しさん
12/02/24 10:58:16.76
うぜえ

8:デフォルトの名無しさん
12/02/24 13:25:33.52
>>6
URLリンク(www.geocities.jp)
URLリンク(accessvba.pc-users.net)
URLリンク(vba.officehp.com)

ググればいくらでも出てくる罠。

9:デフォルトの名無しさん
12/02/24 20:57:22.20
>>6
とりあえず程度なら解説見ないで作れよ。

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

11:デフォルトの名無しさん
12/03/06 16:49:39.47
>>10
URLリンク(oshiete.goo.ne.jp)

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


13:デフォルトの名無しさん
12/03/06 17:46:46.30
>>12
Excelのマクロ実行中にExcelをアクティブウィンドウに出来ればおK。

試してないが、この辺が参考にならないかな?
URLリンク(www.officepro.jp)

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

15:デフォルトの名無しさん
12/03/07 11:20:11.27
HideしてShowするとLoadに飛ぶ

16:デフォルトの名無しさん
12/03/08 16:02:20.11
>>13
ありがとうございます。一度試してみます

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

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


19:デフォルトの名無しさん
12/03/12 14:16:24.17
DoCmd.RunSQL "ALTER TABLE (テーブル) ADD COLUMN XXXX BOOLEAN;"

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


21:デフォルトの名無しさん
12/03/13 15:50:44.64
Office2010 64bit版を使ってるのだとしたら32bit版に入れ替えてみると良いかも。
そうじゃないとしたら、参照設定でバージョンの違うADOモジュールを試すとか。


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

23:デフォルトの名無しさん
12/03/15 23:06:37.82
ADOのDynamicPropertyについて
かなり詳細な解説が知りたいのですが、
なにか参考となるURLや書籍はありませんか?

24:デフォルトの名無しさん
12/03/17 19:33:03.28
Access初心者です。質問があります。
前任者のAccessで作られた業務ソフトを担当することになりました。

まずは全体を見通したいので、Basicのコードやコントロールのプロパティ、
イベントなど、すべての情報をテキストファイルに書き出したいです。

どうやったら良いのでしょうか?
Access2003 です。

教えてください。

25:デフォルトの名無しさん
12/03/19 00:50:30.92
コードはともかくとして、プロパティなんかは
自分でそれをリストするプログラムを書けばいい。


26:デフォルトの名無しさん
12/03/22 05:39:40.85
VBAでそんなこと出来るんですね。
どこかのHPにソースが公開されていないかな〜
参考になるページなど、探して見ます。


27:デフォルトの名無しさん
12/03/22 21:28:12.01
>>26
ツールならこのへんか
URLリンク(www.vector.co.jp)
URLリンク(www.vector.co.jp)
どっちもDAOとかCOMのAccess.Applicationオブジェクトで抜いてるだけだと思う

マクロ多用なら一回VBA変換すると見やすいぞ

28:26
12/03/25 17:47:30.63
>>27
情報サン・クスコ☆

29:デフォルトの名無しさん
12/04/16 23:53:45.24
hosyu

30:デフォルトの名無しさん
12/04/18 00:22:57.54
Accessで同時利用の限界ってどれくらい?
プログラム工夫すれば50人くらいは兵器?

31:デフォルトの名無しさん
12/04/18 13:07:20.08
50人がそれぞれ日一回違う時間帯に読み書きするとかならぜんぜん平気かもしれないよ

32:デフォルトの名無しさん
12/04/26 11:59:42.32
WindowsXP
Access2003

DoCmd.RunCommand acCmdSaveRecord
の使いようがよくわかりません。

例えば
テーブルA フィールド1〜3

についてフォームで値を入力できるようにしたとします。
フォームに入力して閉じるとテーブルのレコードは更新されています。

DoCmd.RunCommand acCmdSaveRecord
を使うとフォームを閉じる前の時点でレコードが更新されるんでしょうか?
しかしこの命令文を通過した後でテーブルを開いてみても更新されていませんでした。

33:デフォルトの名無しさん
12/04/26 13:16:55.86
馬鹿には無理

34:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/05/17 20:45:31.33
人の手でデータ加工する過程はすべてVBAに置き換えられるのでしょうか?


36:デフォルトの名無しさん
12/05/18 03:27:32.55
>>35
Access内でやっている限りは

37:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/05/24 11:34:52.22
VBAじゃないんだけどmdbファイルからSQLで指定テーブルのフィールド名を列挙するSQLを教えてくださ

39:デフォルトの名無しさん
12/05/24 11:40:53.57
>>30
バックエンドにMySQLを使うといったようなクラサバにすれば50人だろうが
100人だろうが行ける。

40:デフォルトの名無しさん
12/05/25 03:16:51.66
>>38
了解

41:デフォルトの名無しさん
12/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


42:デフォルトの名無しさん
12/07/04 17:05:23.99
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:42
12/07/04 17:12:27.30
age忘れたorz

44:デフォルトの名無しさん
12/07/04 19:17:26.30
馬鹿には無理

45:42
12/07/05 10:34:27.66
>>44
d。
おまいのおかげで目が覚めた。

パススルークエリやめて、直接ADOからPostgreSQL開いてクエリ送ったら1づつカウントするわ。
助かったよ。

46:デフォルトの名無しさん
12/07/05 11:25:53.31
やれば出来る子

47:デフォルトの名無しさん
12/07/06 19:18:40.79
おまえみたいなやつが伸びる。






かもしんない。


48:デフォルトの名無しさん
12/08/12 10:55:28.80
Access2003  WinXP SP3 Firefox14.0.1です。

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

49:デフォルトの名無しさん
12/08/12 14:26:35.97
「""」で囲んでみた?

50:デフォルトの名無しさん
12/08/12 15:32:13.48
”で囲むと、「”url”を開くことができません。指定したファイルを開くことができません」というエラーダイアログが出ます。

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

52:デフォルトの名無しさん
12/08/27 21:38:06.30
500件ぐらいのDATAをどんどん追加していくと、3、4回で重くなってしまうんですけど、
どっから手を付けていいのやら分かりません。
ヒントください。

53:デフォルトの名無しさん
12/08/27 21:43:01.77
ソース貼れ

54:デフォルトの名無しさん
12/08/28 07:43:56.82
>>52
書き込みが遅くなるって事ですか?

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

56:デフォルトの名無しさん
12/09/13 00:20:33.72
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:デフォルトの名無しさん
12/09/13 03:17:38.00
>>55
DoCmd.TransferDatabase でできるんじゃね

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




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


61:デフォルトの名無しさん
12/09/26 11:25:57.96
馬鹿には無理

62:デフォルトの名無しさん
12/09/26 11:36:38.59
Microsoft Office Chart10 あるいは、OWC10というグラフを描くコンポーネントで、
クリックやダブルクリックのイベントを使えないですか?
クリックしたグラフの要素を得たいのですが。

63:デフォルトの名無しさん
12/09/26 12:53:17.87
使えますよ。

64:デフォルトの名無しさん
12/09/26 12:59:35.45
>>63
どのようにするのですか?
何か参考になるページなど教えてもらえませんか?

65:デフォルトの名無しさん
12/09/26 17:04:56.08
>>64
使えますよ。

66:デフォルトの名無しさん
12/09/26 18:11:11.92
>65
使えますね。

67:デフォルトの名無しさん
12/09/26 18:20:01.38
>>66
さっさと使え。

68:デフォルトの名無しさん
12/10/01 21:06:32.64
>>57
サンキュー助かった!
スマホで規制で返信できずすスマソ。

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

70:デフォルトの名無しさん
12/11/26 00:10:07.28
引っ込んだら戻らなくなるのがトグルボタンなんだけど

71:デフォルトの名無しさん
12/11/26 21:19:17.24
お前らここまでやるならC#でEXCELデータいじった方が簡単だろ

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


73:デフォルトの名無しさん
12/11/26 21:38:01.20
トグルボタン1を押したあと
トグルボタン2を押して
トグルボタン3を押したら
トグルボタン2はどうなってますか

74:デフォルトの名無しさん
12/11/26 22:19:50.73
>>73
トグルボタン2の表示は押されていない状態です。
トグルボタン1が押されたままの表示になっています。

75:デフォルトの名無しさん
12/11/26 22:27:05.15
1がグループに入ってないな

76:デフォルトの名無しさん
12/11/27 06:18:00.99
馬鹿には無理

77:デフォルトの名無しさん
13/02/09 15:50:52.56
ACCESS2013はどうですか?

78:デフォルトの名無しさん
13/03/04 07:41:06.45
>>77
adpがつかえん
クラサバの旗降ってきた漏れの立つ瀬がない囧rz

79:デフォルトの名無しさん
13/03/04 13:02:19.07
ACCESS2013の利点は無いのかね!

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

81:デフォルトの名無しさん
13/03/24 06:36:06.38
無料バージョンアップできると聞いて2010買ったのに、発売の2/6までにインスコしないといかんかった囧rz
血も涙もないよ

82:デフォルトの名無しさん
13/03/24 07:16:09.59
おめでとうw

83:デフォルトの名無しさん
13/03/26 11:24:23.03
Win8でACCESS2010です。

Form_test.Filter = "分類 Not Like ""*あああ*"" And Not Like ""*いいい*"""
Form_test.FilterOn = True

コンボボックスの更新後処理イベントで上記のコードを走らせると、
「構文エラー:演算子がありません」と返されます。
初歩過ぎる質問ですんまそん。文法何か間違ってますでしょうか。

84:デフォルトの名無しさん
13/03/26 12:05:53.53
Form_test.Filter = "分類 Not Like ""%あああ%"" And Not Like ""%いいい%"""

85:デフォルトの名無しさん
13/03/26 13:24:28.20
たぶん
 "分類 Not Like ""*あああ*"" And 分類 Not Like ""*いいい*"""

86:デフォルトの名無しさん
13/03/26 15:56:56.54
>>84->>85
返信ありがとうございます。どちらも「演算子がありません」エラーは解消されませんでした。

ちなみに、↓は問題ないので、And Notがまずいのかなと思ったんですが、書式は問題なさそうですか・・・。
Form_test.Filter = "分類 Not Like ""*あああ*"""
Form_test.FilterOn = True
他の方法も探してみます。

ヘルプ開くとBingとかいうのが出て何も表示されないお・・・。2010使いづらいお(;´Д`)

87:デフォルトの名無しさん
13/03/26 17:04:55.32
Form_test.Filter = "Not (分類 Like ""*あああ*"" Or 分類 Like ""*いいい*"")"

88:デフォルトの名無しさん
13/03/27 08:35:25.18
>>87
これでいけました!ありがとうございます!

89:デフォルトの名無しさん
13/03/27 11:51:17.13
>>88
>>84は文法間違いあるけど、>>85はいけるはずだが、ほんとにダメだったのか?
先頭の のとこは無視しないとだめだぞ

90:デフォルトの名無しさん
13/03/27 17:54:38.17
"Not 分類 Like ""*あああ*"" And Not 分類 Like ""*いいい*"""

91:デフォルトの名無しさん
13/04/04 18:20:58.41
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:デフォルトの名無しさん
13/04/04 19:39:15.05
>>91
URLリンク(tsware.seesaa.net)

93:デフォルトの名無しさん
13/04/12 00:23:04.15
使用不可にいている3つのテキストボックスを、
チェックボックスをonにすると使用可能にするにはどうしたらいいでしょうか?

94:デフォルトの名無しさん
13/04/12 01:37:21.85
>>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:デフォルトの名無しさん
13/04/12 11:57:39.57
>>92
参考にさせてもらいました。
ありがとうございます。

引き続き質問なのですが、
Windows8(32bit) + Access2010(32bit)環境で作成したファイルを
Windows8(64bit) + Access2010(32bit)環境で実行した場合に毎回ではないのですが、
レーダーチャートの目盛りが正常に表示されません。(-3E+259と表示される)
なお、表示しているデータは毎回同じものです。

ちなみに、Windows8(64bit) + Access2010(32bit)環境で作成したファイルを
Windows8(64bit) + Access2010(32bit)環境で実行した場合も同様でした。

この現象について何かご存知の方がいらっしゃいましたらお願いします。

96:デフォルトの名無しさん
13/04/12 17:36:38.89
>>94
もう少しシンプルなコードはないですか?
わがままですみません。

97:デフォルトの名無しさん
13/04/12 17:42:08.68
>>96
Private Sub チェックボックス_Click()
Me.テキストボックス1.Enabled = Me.チェックボックス.Value
Me.テキストボックス2.Enabled = Me.チェックボックス.Value
Me.テキストボックス3.Enabled = Me.チェックボックス.Value
End Sub

98:デフォルトの名無しさん
13/04/12 18:36:06.95
>>97
すばやいご回答ありがとうございました。
いろいろな書き方があるんですね。

99:デフォルトの名無しさん
13/04/12 22:29:10.45
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"))

というアドバイスをしてくれた方がいましたが、
これに相当するコードが全くわかりません。
丸投げですがどなたか教えてくださいませ。

100:桃白白
13/04/13 02:40:34.80
>>99
Function marume(ByVal s As Double) As Double
  Dim Q As Double
  Dim H As Double

  Q = TimeValue("0:15")
  H = TimeValue("0:30")
  
  If s < Q Then
    marume = H
  Else
    marume = Fix((s + Q) / H) * H
  End If
End Function

101:デフォルトの名無しさん
13/04/13 17:33:29.73
>>100
フォームの[実時間]の時間によって[時間]に結果を出す場合で、

Function 時間(ByVal 実時間 As Double) As Double
Dim Q As Double
Dim H As Double

Q = TimeValue("0:15")
H = TimeValue("0:30")

If 実時間 < Q Then
時間 = H
Else
時間 = Fix(([実時間] + Q) / H) * H
End If
End Function

としましたがうまくいかず、どこをどうしたら良いのかまるでわかりません。
ご指摘お願いいたします。

102:桃白白
13/04/13 20:28:48.85
>>101
あら。結果がずれてた? それともなんか変な動きした?
引数の形式が違うのかな。どういう入力でどう出力された?

103:デフォルトの名無しさん
13/04/13 21:29:31.16
>>102
[開始時間]に入力、[終了時間]に入力後、
時間の差を[実時間]に表示し、これを基に[時間]に結果を表示したい、という流れですが、
フォームを開くだけで以下の、

「イベント プロパティに指定した式 読み込み時でエラーが発生しました:
このメンバー識別子は既にオブジェクトモジュールの中に存在しています。」
※マクロ名、ユーザー定義関数、[イベント プロシージャ]以外の式が指定されています。
※関数、イベント、マクロの評価でエラーが発生しました。

というエラーメッセージがでますが、正直理解できていません。

104:桃白白
13/04/14 01:59:24.64
>>103
コントロールの名前と関数の名前が競合してるんでない?
コントロールと関数を別の名前にしてコントロールソースで紐付けて
やっちゃえばいいよ。こんな感じで。

Database1.zip download
URLリンク(kie.nu)

105:デフォルトの名無しさん
13/04/14 14:28:32.69
>>104
うわー、ファイルのアップまでしていただき本当にありがとうございます。
テーブルに記録しておく必要があったため、

Private Sub 終了時間_AfterUpdate()
時間 = Marume(実サービス時間)
End Sub

ということで全てスッキリしました。
いただいたコード自体見てもほとんど理解しきれてませんが、
これから勉強しながら頑張ってみます。
再度、本当にありがとうございました。

106:デフォルトの名無しさん
13/04/19 11:54:05.25
フォームのプロパティにある「コード保持」って何でしょうか?
「はい/いいえ」はどのように使い分けるのでしょうか?

107:デフォルトの名無しさん
13/04/19 12:30:11.35
存在しないオブジェクトに関連したコードを不要になったときに自動で削除する機能がある
たとえば"ボタンA"をクリックしたときのコードを書いてある状態で
あとで"ボタンA"を"ボタンB"に名称変更したりしたときに
コード保持が「いいえ」だと"ボタンA"をクリックしたときのコードは捨てられる

108:デフォルトの名無しさん
13/04/19 16:04:50.27
どもです

つまりコード保持は、名称変更をした際に以前のコードが消えても良い
または名称変更は絶対にしないような状況であれば、「いいえ」を選択しておいても良い
と言うことで間違いないですか?

どこかで「いいえ」にした方が速度が速くなる的なことが書いてあった覚えがあるので・・・

109:デフォルトの名無しさん
13/04/19 16:43:59.98
>>107
名前の自動修正オプションとこんがらがってないか?

>>108
コード消えるのはフォームかレポート単位だぞ
名前変更とか関係なくて、そのフォームのコード全部消えるぞ

ヘルプにはコードが無いからいいえの方が処理が早いとは書いてあるな
その分制約もあるが
ヘルプみて意味がわからないなら、設定変えるのはやめとけ

110:デフォルトの名無しさん
13/04/22 10:00:33.47
>>109
遅くなりましたが、ありがとです

試しにフォームを作成時に、「いいえ」を選択しておいた状態で
イベントプロシージャを設定してみました。
その時点で自動的に「はい」に切り替わるんですね。

そしてコードを使うフォーム、レポートが1000個を超えるものは作れないと言う事なんですね。
勉強になりました。

111:デフォルトの名無しさん
13/04/25 11:56:04.36
タブコントロールでページ5枚作る。
チェックボックスによって表示ページ数を切り替えたい。
・チェックなし : ページ1〜ページ5
・チェックあり : ページ2〜ページ4

そのため、チュックボックスのイベントプロシージャで、一旦全部のページを非表示にして
そのあと、必要なページを表示するようにしてみました。

For i=0 To 5
Me.Controls("ページ" & i).Visible = False
Next i

For i=Starrt To Start+Cnt
Me.Controls("ページ" & i).Visible = False
Next i

それで、ページ5を選択している状態でチェックありにすると
消したはずのタブの周りの枠が残ってしまいます。

これを綺麗に消す方法ってありませんか?

環境はAccess2010です。

112:111
13/04/25 12:00:42.84
忘れてましたがタブの背景色を変更したいので
タブコントロールのプロパティで「テーマの使用」を「はい」に設定してあります。

113:デフォルトの名無しさん
13/04/25 14:29:36.88
消す前に違うページを選択すれば良いだけじゃないのか?

114:デフォルトの名無しさん
13/05/21 13:36:25.32
チェックボックスの true が -1 から 1 に変わったようです
2007からでしょうか?

変更がめんどくさい

115:デフォルトの名無しさん
13/05/22 11:48:10.00
>>114
2003と2007で試したけど非連結で画面でチェックした場合はどちらも-1になる
ただし、コードで1をセットしたら1のままだった

まず1をセットするコード書くのが悪い
そして、1でも-1でもBooleanとして評価したらTrueなんだから
そんな事に影響されるコード書くのが悪い

116:デフォルトの名無しさん
13/05/22 14:18:44.22
>チェックボックスの true が -1 から 1 に変わったようです
>2007からでしょうか?

キリっ

117:デフォルトの名無しさん
13/05/22 14:27:02.75
知らんがな
ってレスしようと思ったけど
かわいそうなので放っといた

118:デフォルトの名無しさん
13/06/04 02:35:18.23
月曜会社を休んで家で土曜から月曜までVBAをひたすら書き続けた結果
頭が超重くなって3日目は何やってるかよくわからないまま終わってしまった
VBAのコーディングをぶっ通しでやるのは2日が限界か?

119:デフォルトの名無しさん
13/06/05 22:11:38.14
>>118
限界は人それぞれだろうが、無理はすんなよ

120:デフォルトの名無しさん
13/06/21 00:57:48.54
access 2003 にて
SendObjectメソッドを利用して、メールを送信したいと思っています。

実際にメールを送れるようにはなっているのですが、
送信メール本文に「mdbファイルと同一ディレクトリにある単体の.msgファイルの本文」(.msgファイルの場所はフルパス指定でも構いません)
を表示させる事は可能でしょうか?

イメージ的には、テーブルから送信先アドレスを収集し、.msgファイルの本文の内容をテンプレートとして一括送信する
と言った感じです。

121:デフォルトの名無しさん
13/06/21 01:01:26.56
書き忘れました。
メール送信ソフトはoutlookです。

122:デフォルトの名無しさん
13/06/21 07:11:37.65
.msgファイルの形式ってたぶん公開されてないんだよなぁ
どうやってメールを.msgで保存してるかしらんが、そっちを変更した方が楽な気がする
outlookでもVBAは使えるぞ

123:デフォルトの名無しさん
13/06/30 18:38:52.19
>>120
OutLookのSession.OpenSharedItemで.msgファイルの読み込みできるが
他のアプリからOutLookいじるのはお勧めしない
OutLook側でmdbに書きだすとか、プレーンテキストで保存するとかした方が良いんじゃね

124:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
質問です
ODBCの接続する際に
IDとパスワードを入力するボックス(VBAで設定したものではない)がありますが、
初めから半角英数字になるように設定はできますか?

125:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
VBAで設定したものではないものを、VBAでどうこうするのは無理があります

126:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
>>125
ですよね。
IDやパスワードを入力するときに各々気を付けてもらうしかないですね。

127:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
>>126
プロパティにないの?

128:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
ODBCのミドル層で出てるダイアログだから、アクセス側からいじれるプロパティなんてないだろ
自分でIDとパスワード入力してもらうフォーム作ってそこに入力してもらえ

129:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN
DBの持ち物か。すまん。
ダイアログの出る直前にACCESSで入力を固定して終わったら解除ってできないのかね。
(調べてない、ただの理想を述べてみた。)

130:デフォルトの名無しさん
13/09/01 00:30:06.54
>>129
>>124が言ってるのは多分、ODBCで接続するときにユーザとパスワードを指定しなかったときに出るやつ
自分でちゃんと接続できるユーザとパスワード指定したら出ない
間違ったユーザやパスワード設定したらしらん

131:デフォルトの名無しさん
13/09/01 02:59:29.29
Access初心者です。
VBAでExcelからデータをコマンドボタンで自動インポートさせる物を
作っています。
インポート漏れがないかのチェック処理もさせたいのですが、
どのようにすればいいかわかりません、ご教授お願いします。

132:デフォルトの名無しさん
13/09/01 03:24:10.08
>>131
レコード数で比較すれば?

133:デフォルトの名無しさん
13/09/01 03:48:29.03
>>132
ありがとうございます。
仮に件数が合わなくてインポート漏れしたレコードを
特定するための処理をいれることはできますか?

134:デフォルトの名無しさん
13/09/01 03:59:24.56
ユニークキーで差分とれよ
少しは考えろよ

135:デフォルトの名無しさん
13/09/01 04:00:02.93
>>133
ユニークキーで差分とれよ
少しは考えろ

136:デフォルトの名無しさん
13/09/01 08:49:32.79
インポート漏れなんてあるの?

137:デフォルトの名無しさん
13/09/01 09:02:48.06
結構ある
あと勝手にデータ変換されてたりもする

138:デフォルトの名無しさん
13/09/01 09:25:38.41
そうか
ならインポートしてからチェックするより自前のコードでインポートした方がいいんじゃない?

139: 【だん吉】
13/09/01 09:31:40.27
自分はそうしてる

140:デフォルトの名無しさん
13/09/01 10:05:17.59
ウィザードにまかせてるとひどい目にあう

141:デフォルトの名無しさん
13/09/01 10:35:21.42
Access初心者なので、そのVBAのコードの書き方がわかりません
教えていただけませんか

142:デフォルトの名無しさん
13/09/01 10:36:54.67
いいですよ

143:132
13/09/01 19:42:00.26
>>131
www.nurs.or.jp/~ppoy/access/access/acX014.html

144:デフォルトの名無しさん
13/09/01 20:23:21.63
インポート漏れするデータ欲しい
試してみたい

145:デフォルトの名無しさん
13/09/01 23:14:50.69
数字型のとこに文字入ってるデータとか用意したらいいんじゃね

146:デフォルトの名無しさん
13/09/01 23:38:03.38
>>145
うーん、そういうデータをインポートすると普通にエラーとして扱われて
「テーブル名_$インポート エラー」 ってテーブルが生成されるから
インポート漏れのレコードがわからなくて困る、なんて状況にはならないんだよね

147:デフォルトの名無しさん
13/09/02 10:35:57.67
インポート漏れのレコードがわからなくて困る、なんて状況になると言ってる人はいないが

148:デフォルトの名無しさん
13/09/02 10:57:43.03
おもろいな

149:デフォルトの名無しさん
13/09/05 23:50:52.09
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
strac, strxls, True, strrange
上記でインポート エラーになるので引数のacImportのところに、
作成したインポート定義にしたいのですができるのでしょうか

150:デフォルトの名無しさん
13/09/07 03:42:11.28
よし

151:デフォルトの名無しさん
13/09/07 16:59:26.27
そもそもワークシート変換にインポート定義とかないだろ

152:デフォルトの名無しさん
13/09/09 01:46:05.73
Accessの初心者です。
レポート印刷でページヘッダーのコードが変わったタイミングで改ページしたい
かつ詳細の明細行は4レコードだけで改ページさせる、両方の条件を満たせるには、
どうやって作成したらよいかご教授お願いします。

153:デフォルトの名無しさん
13/09/09 02:08:51.60
ページヘッダーじゃなくて、その項目でグループ化してヘッダー作る
そのヘッダーかフッターで改ページを設定する

詳細の高さを4行分になるようにヘッダ、フッタや余白を調整する

つか、VBAまったく関係ない話

154:デフォルトの名無しさん
13/09/09 07:18:08.57
>>153
ここはVBAのスレですよね?VBAと関係ある話をしてください。
VBAとまったく関係ない話をしたのはあなたです。VBAでお願いします。

155:デフォルトの名無しさん
13/09/09 13:03:59.99
VBAを一言で表すと

156:デフォルトの名無しさん
13/09/09 13:20:44.56
>>154
マジレスしといてやるが、VBAでやるよりよっぽど>>153の方法の方が良いぞ
だがあえてVBAでやりたいなら
明細セクションの最初と最後に改ページコントロール(改ページ1,2)を配置して
Dim 行数 As Integer
Dim 前コード
Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
&nbsp; &nbsp; Me.改ページ1.Visible = False
&nbsp; &nbsp; Me.改ページ2.Visible = False
&nbsp; &nbsp; 前コード = Me.フィールド5
End Sub
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
&nbsp; &nbsp; If Me.フィールド5 <> 前コード Then
&nbsp; &nbsp; &nbsp; &nbsp; Me.改ページ1.Visible = True
&nbsp; &nbsp; &nbsp; &nbsp; 行数 = 0
&nbsp; &nbsp; Else
&nbsp; &nbsp; &nbsp; &nbsp; Me.改ページ1.Visible = False
&nbsp; &nbsp; End If
&nbsp; &nbsp; 前コード = Me.フィールド5
&nbsp; &nbsp; 行数 = 行数 + 1
&nbsp; &nbsp; If 行数 > 4 Then
&nbsp; &nbsp; &nbsp; &nbsp; Me.改ページ2.Visible = True
&nbsp; &nbsp; &nbsp; &nbsp; 行数 = 0
&nbsp; &nbsp; Else
&nbsp; &nbsp; &nbsp; &nbsp; Me.改ページ2.Visible = False
&nbsp; &nbsp; End If
End Sub
こんな感じ。この例ではフィールド5が変わったら改ページな

157:デフォルトの名無しさん
13/09/09 13:22:34.74
う。&nbsp;は空白に置換してくれ
つか普通に貼り付けできなくなったのかよ

158:デフォルトの名無しさん
13/09/10 00:16:36.47
>>156
もう少し教えてください。。。
明細が5明細あった場合、

コードA
00001
00002
00003
00004
改ページ
コードA
00005
改ページ
コードB
00001
00002
00003
改ページ
コードC
00001

こんな感じで出したいのですが

159:デフォルトの名無しさん
13/09/10 02:26:08.63
>>158
>>156が理解できないなら、VBAでやるのやめとけ

160:sage
13/09/17 19:50:09.24
Accessのクエリで、「クエリの並び替え条件を動的に変更する」方法を
教えて頂けないでしょうか。

現状は、下記のクエリを作成しましたが、並び替え条件として判定されません。

SELECT * FROM テーブル1
ORDER BY FORMS!画面1!テキスト1.Value

よろしくお願いします。

161:デフォルトの名無しさん
13/09/17 20:22:56.49
>>160
SELECT * FROM テーブル1
ORDER BY FORMS!画面1!テキスト1.Value

これってどこに書いてるの?

162:デフォルトの名無しさん
13/09/17 21:44:28.61
>>160
どうしてもやりたいならQueryDefとか使えばできるかもしれんが
動的にSQLつくってDoCmd.RunSqlでやる方がいいんじゃね

163:160
13/09/17 22:09:44.82
>>161
Accessの「クエリ」で定義していました。

>>162
ご指摘を受けた点を参考にクエリを作成した所、うまく行きました。
ありがとうございます。

164:デフォルトの名無しさん
13/10/20 21:44:25.62
株価のデータベースを作りVBAで銘柄の抽出をしています
VBAを呼ぶ度にSQLで株価データを読み込んでるので日に何度もやると結構無駄です

そこでフォームをロードした時に纏めて銘柄毎のクラスオブジェクトを作り
フォームをアンロードするまで保持したいのですが可能でしょうか?

変数の保持はStaticで良いようですが、配列化してるオブジェクトの保持はどのようにするのでしょうか?

165:デフォルトの名無しさん
13/10/20 22:06:18.65
view

166:デフォルトの名無しさん
13/10/20 22:10:51.15
すごいVBA発見w
URLリンク(esuafai.digi2.jp)

167:164
13/10/20 22:56:11.74
フォームと連動させるのではなく、最初に実行させる時にStaticで保持し
2度目からオブジェクトが空ではないならデータを取りに行かずに
値渡しするようにして解決しました

168:デフォルトの名無しさん
13/10/21 00:11:20.78
なんか色々つっこみどろこ満載だな
まあ、動いてるならいいか

169:デフォルトの名無しさん
13/11/05 18:56:30.39
VBAでリモートのデータベースにトランザクション処理を開始して、コミット/ロールバックするのはわかりました。
これをマクロのアクションだけではできないですよね。
Vbaを嫌がる仲間が同一プロジェクト内にいるので。

170:デフォルトの名無しさん
13/11/16 13:17:48.50
初心者ですみません。コンパイルってなんですか?

171:デフォルトの名無しさん
13/11/16 13:19:54.03
疲労困憊る

172:デフォルトの名無しさん
13/11/16 13:40:52.90
コンパイルダー・オン

173:デフォルトの名無しさん
13/11/16 15:59:42.46
昔広島にあったSTGや落ちゲーキャラゲー開発してた会社

174:デフォルトの名無しさん
13/11/16 17:51:44.57
あったなぁ

175:デフォルトの名無しさん
13/11/16 18:27:38.04
脳みそコネコネの会社?なくなったのか?

176:デフォルトの名無しさん
13/11/16 18:29:57.41
マジレスしとこう
>>170
ソースプログラムを実行可能形式に変換する事

簡単に言えば、お前が書いたプログラムを実行できるように準備する作業
ACCESSなら勝手にやってくれるから、意識する必要はない

177:デフォルトの名無しさん
13/11/16 19:25:11.96
>>175
1998年に無くなって、落ちゲー関係はセガが買い取った

178:デフォルトの名無しさん
13/11/16 21:35:05.65
>>176
なるほど。では、あえてコンパイルという作業をしなくてもOK
ってことですね。
あるがとうございます!

179:デフォルトの名無しさん
13/11/25 21:45:32.92
Accessの場合、ソースを中間コードに変換する作業をコンパイルと呼んでる。
その過程でソースにエラーがあるかどうかをチェックするから
実行時エラーとかの対策にはコンパイル通しておいた方が良いと思う。

180:デフォルトの名無しさん
13/11/26 02:50:39.57
実行時エラーってのは普通、コンパイルは通った後に発生するエラーの事を言うんだが
まあ、実行時にコンパイルエラー出るのもなんだし、事前にコンパイルしとけってのは同意するが

181:デフォルトの名無しさん
14/01/31 12:48:48.93
Access独自の便利機能なのか分かりませんが
テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るのですが
これをVBAでやるにはどうしたら良いのでしょうか?

テキストに規則性が無いためにOrderByなどでは対応出来ません
テキストフィールドに入ってる文字列の例:

"第3四半期決算を1月10日に発表済み"
"第3四半期決算を2月10日"
"本決算を2月13日"
"---"

このようになってても、テーブルのフィールドを選択してソートが出来るとは初めて知ったのですが
VBAからやる方法が分かりません

182:デフォルトの名無しさん
14/01/31 13:00:11.86
>>181
>テキストに規則性が無いためにOrderByなどでは対応出来ません

最初に書いたSQLが悪かったみたいで
これで出来ました。サーセン

183:デフォルトの名無しさん
14/01/31 15:57:33.35
辞書順と偶然一致しただけなんじゃないの

184:デフォルトの名無しさん
14/01/31 18:24:40.76
そもそも
>テキスト型のフィールドで日付が含まれる文を「日付順にソート」出来るの
これが怪しいんだが
どこでこんな事教えられたんだ

185:デフォルトの名無しさん
14/01/31 19:17:48.82
そうだな、俺も出来るとは思ってなかった
しかし、実際その通りに動くのだから仕方がないw

だから最初に「Access独自なのか」と思ってるのだが
これが出来るのは2013だからかもしれない

186:デフォルトの名無しさん
14/01/31 19:30:53.46
テキスト型だから、文字数順に並び替えてるのかと思って試してみた

"本決算を2月13日"、これを"本決算を1月13日"に書き換えて試すと
日付順に並び替わる>>181の例で言うと真ん中に来る

更に"第3四半期決算を2月10日"、これを"第2四半期決算を2月10日"
とやっても日付順に並び替わるので間違いない、>>181の例で言うと一番最初に来る

しかし、2月3日と02月03日表記では並び方が変わる
具体的にはMD表記郡の中でソートされ、MMDD表記郡の中でソートされる

187:デフォルトの名無しさん
14/01/31 19:54:34.74
分かった。ググったら出てきた
2007から出来るらしいけど、勝手に日付を解釈してるのではなく
正確にはテキスト部分を無視して数値順に並び替えてる、らしい

188:デフォルトの名無しさん
14/01/31 21:40:18.27
ということはデータを統一しないといけませんね

189:デフォルトの名無しさん
14/01/31 22:33:10.45
ソートの問題じゃなくて暗黙の型変換の問題な気はするけど
>テキスト部分を無視して数値順に並び替えてる
普通にソートすればテキストでソートするんだが
どうやったらそんなソートするんだ?

190:デフォルトの名無しさん
14/01/31 22:39:33.21
どんな型変換すればそうなるのか、逆に聞いてみたい

191:デフォルトの名無しさん
14/02/01 13:42:22.69
あいまいな検索をしたい場合はLike *検索文字列* だけど
これだと、先頭文字列に外字が含まれてる場合は検索されない
のだけれど、回避方法はある?

192:デフォルトの名無しさん
14/02/02 23:15:37.86
>>191
ちゃんと検索できるっぽいけど
先頭文字に外字ってのは、検索対象のテーブルデータなのか、Likeに指定する文字列なのか?

193:デフォルトの名無しさん
14/02/03 09:59:08.52
>>192
先頭に含まれる外字は検索対象のテーブルデータです
文字列の中間に外字が含まれる場合は検索できるのに、
先頭だと検索されない減少が発生する…

194:デフォルトの名無しさん
14/02/03 16:26:19.10
>>193
かるく試したが再現しないな
OSかACCESSのバージョンによる問題か
単にお前の勘違いか
ACCESSでも限定された状況でのバグか
MDB(ACCDB)がぶっ壊れてるか

まあ、単に検索できないレコードに不正なデータが混じってるだけだと思うが

195:191
14/02/03 18:14:37.26
一応解決したっぽい

原因として、dbmagicにodbc経由でリンクテーブルに
したのがダメらしい
リンクテーブルをやめて、テーブルデータごとインポートしたら
通常通りに検索できた

みんなありがと

196:デフォルトの名無しさん
14/02/03 18:49:01.92
喰らえカスども、奥義「後出し特殊条件!」

197:デフォルトの名無しさん
14/02/03 18:58:14.00
生データインポ時に変換されただけとかは?
つまりODBC接続でもデータを相応しい変換しておけば解決できるのかも


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4207日前に更新/55 KB
担当:undef