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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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


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


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

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

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

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

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

教えてください。

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


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


27:デフォルトの名無しさん
12/03/22 21:28:12.01 .net
>>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 .net
>>27
情報サン・クスコ☆

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

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

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

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

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

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

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

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

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

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


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

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

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

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

41:デフォルトの名無しさん
12/05/25 23:17:09.33 .net
>>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 .net
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 .net
age忘れたorz

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

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

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

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

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






かもしんない。


48:デフォルトの名無しさん
12/08/12 10:55:28.80 .net
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 .net
「""」で囲んでみた?

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

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

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

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

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

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

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

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




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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

82:デフォルトの名無しさん
13/03/24 07


83::16:09.59 .net



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

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

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

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

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

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

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

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

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

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

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

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

92:デフォルトの名無しさん
13/04/04 18:20:58.41 .net
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の実行ファイルは作成可能ですか?

93:デフォルトの名無しさん
13/04/04 19:39:15.05 .net
>>91
URLリンク(tsware.seesaa.net)

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

95:デフォルトの名無しさん
13/04/12 01:37:21.85 .net
>>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

96:デフォルトの名無しさん
13/04/12 11:57:39.57 .net
>>92
参考にさせてもらいました。
ありがとうございます。

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

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

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

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

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

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

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

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

101:桃白白
13/04/13 02:40:34.80 .net
>>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

102:デフォルトの名無しさん
13/04/13 17:33:29.73 .net
>>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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

112:デフォルトの名無しさん
13/04/25 11:56:04.36 .net
タブコントロールでページ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です。

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

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

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

変更がめんどくさい

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

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

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

キリっ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

153:デフォルトの名無しさん
13/09/09 01:4


154:6:05.73 .net



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

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

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

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

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

158:デフォルトの名無しさん
13/09/09 13:20:44.56 .net
>>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が変わったら改ページな

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

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

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

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

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

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

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

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

よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

189:デフォルトの名無しさん
14/01/31 19:54:34.74 .net
分かった。


190:Oグったら出てきた 2007から出来るらしいけど、勝手に日付を解釈してるのではなく 正確にはテキスト部分を無視して数値順に並び替えてる、らしい



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

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

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

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

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

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

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

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


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

286日前に更新/273 KB
担当:undef