Access VBA質問箱 IV

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

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


4 / 500 ページ ←次へ | 前へ→

【13250】access以外のアプリを起動したとき。
質問  kk  - 18/6/9(土) 17:04 -

引用なし
パスワード
   accessを起動しているとき、タスクバーを触り、accessがアクティブ状態ではなくなった時に、ラベルにメッセージを出したいです。
ちなみにDeactivateを使ってみましたがaccess内の別のページに移動したときにはメッセージが表示されるのですがタスクバーを触ったときは何も表示がされません。
解決方法があれば押してください。
・ツリー全体表示

【13249】Re:access2016でフォームを開くコードは
発言  よろずや E-MAIL  - 18/5/27(日) 23:56 -

引用なし
パスワード
   ▼文豪 さん:
>access2003では、フォーム(F10)を閉じ、フォーム(F100)を開くには
>docmd.close
>docmd.openform "F100"
>で良かったですが、access2016ではどのようなコードになりますか。

変わってないはずですが、何か不都合でも。
・ツリー全体表示

【13248】access2016でフォームを開くコードは
質問  文豪  - 18/5/27(日) 17:14 -

引用なし
パスワード
   access2003では、フォーム(F10)を閉じ、フォーム(F100)を開くには
docmd.close
docmd.openform "F100"
で良かったですが、access2016ではどのようなコードになりますか。
どなたか教えて下さい。
・ツリー全体表示

【13247】Re:ネットワークドライブの絶対パス取得
お礼  ゆうか  - 18/5/10(木) 17:00 -

引用なし
パスワード
   ご回答ありがとうございます。
その後、
ht tps://qiita.com/yoshida261/items/839ba9b935fb68ef0bfe
こちらを参考にして正しくパスを取得することができました。

ありがとうございました。
・ツリー全体表示

【13246】Re:ネットワークドライブの絶対パス取得
回答  亀マスター  - 18/5/7(月) 21:08 -

引用なし
パスワード
   BuildPath は第1引数に指定したフォルダに第2引数のフォルダ名を
追加した場合のフルパスを返すもので、第1引数、第2引数共に文字列型です。
一方、Application.CurrentProject は文字通り現在のプロジェクトそのものを
返すものであり、プロジェクトのパスを返すものではありません。
だから「型が一致しません」というエラーになるのです。

現在のプロジェクトのフルパスが知りたいなら、BuildPath ではなく
Application.CurrentProject.FullName か、
Application.CurrentProject.Path を使います。
前者がファイル名まで含めたフルパス、
後者がファイルのあるフォルダのパスです。

で、肝心なサーバー名を含めたパスの取得方法ですが、
以下の質問が参考になるのではないでしょうか。
私自身は試していませんが、上記で得たフルパスから
ドライブ文字を取得し、それをこの質問で出ていた
方法に通せばいけるように思います。

ht tps://dobon.net/vb/bbs/log3-14/8196.html
・ツリー全体表示

【13245】ネットワークドライブの絶対パス取得
質問  ゆうか  - 18/5/7(月) 16:46 -

引用なし
パスワード
   いつも色々と参考にさせていただいております。

AccessのVBAで現在のMDBファイルのパスを取得したいと思っています。
MDBがあるパスは、ネットワークドライブを割り当てているので
G:\test\VBA のようにパスが表示されますが、そうではなく絶対パスで
\\FileServer\test\VBA のような形式でパスを取得し、同じMDBファイルで
実行する他のプロシージャでも利用したいと思います。

Dim objFso As Object

Set objFso = CreateObject("Scripting.FileSystemObject")

Debug.Print objFso.BuildPath(Application.CurrentProject)

Set objFso = Nothing

とすると
Debug.Print objFso.BuildPath(Application.CurrentProject)のところで
型が一致しませんと言うエラーになります。

どのように記述するのが正しいかご教示頂けると幸いです。
よろしくお願い致します。
・ツリー全体表示

【13244】Re:2000→2016へ
お礼  ゆまゆま  - 18/3/28(水) 8:33 -

引用なし
パスワード
   ▼hatena さん:
>▼ゆまゆま さん:
>>1.アクセス2000 mdbをとりあえずアクセス2016 mdbで使用する。(問題なければ)
>>2.↑で使用中のアクセス2016 mdbを徐々にアクセス2016 accdbに変換していく。
>>
>>の方法でいこうと思います。(2007や2013は使用しない)
>>でいいのでしょうか。
>
>いいんじゃないかな。
>問題がでたら、その時点で対応を検討でいいかと。

ありがとうございました!!
・ツリー全体表示

【13243】Re:2000→2016へ
回答  hatena  - 18/3/27(火) 16:21 -

引用なし
パスワード
   ▼ゆまゆま さん:
>1.アクセス2000 mdbをとりあえずアクセス2016 mdbで使用する。(問題なければ)
>2.↑で使用中のアクセス2016 mdbを徐々にアクセス2016 accdbに変換していく。
>
>の方法でいこうと思います。(2007や2013は使用しない)
>でいいのでしょうか。

いいんじゃないかな。
問題がでたら、その時点で対応を検討でいいかと。
・ツリー全体表示

【13242】Re:2000→2016へ
質問  ゆまゆま  - 18/3/27(火) 9:11 -

引用なし
パスワード
   ▼hatena さん:
>あくまで自分の経験上だけですが、
>MDBをAccess2016で問題なく使用できれば、
>Accdbに変換しても問題になることはないと思います。
>
>Accdbの方が新機能も追加されているので、そちらて運用すればいいのでは。

ありがとうございます。
お忙しい所、可能ならば、もう一点だけ質問なのですが、
1.アクセス2000 mdbをとりあえずアクセス2016 mdbで使用する。(問題なければ)
2.↑で使用中のアクセス2016 mdbを徐々にアクセス2016 accdbに変換していく。

の方法でいこうと思います。(2007や2013は使用しない)
でいいのでしょうか。
・ツリー全体表示

【13241】Re:2000→2016へ
回答  hatena  - 18/3/26(月) 10:14 -

引用なし
パスワード
   あくまで自分の経験上だけですが、
MDBをAccess2016で問題なく使用できれば、
Accdbに変換しても問題になることはないと思います。

Accdbの方が新機能も追加されているので、そちらて運用すればいいのでは。
・ツリー全体表示

【13240】2000→2016へ
質問  ゆまゆま  - 18/3/23(金) 15:00 -

引用なし
パスワード
   お世話になります。初心者です。
元々アクセス2000?か2002?で作成した Microsoft Office Access アプリケーション (.mdb)を現在アクセス2003で使用しています。(2011年頃?このPCを使用始めた時、ワード、エクセルは2007だが、アクセスは使いにくかったので2003を入れてました)
 
Office 2007のサポート終了に伴い(もう過ぎてますが(苦笑))Office 2016に入れ替えることになりました。
アクセスに不安があったので、システム会社にお願いし、アクセス2007とアクセス2013のソフトをテストで使用させてもらい、UP出来れば、2016にもスムーズに移行出来ると思い「accdb」に変換して準備していました。
 
先日アクセス2016が入り、試しにそのままダイレクトに、アクセス2000?か2002?で作成した Microsoft Office Access アプリケーション (mdb)を操作しましたら、開くことが出来、使用可能でした。ネットで調べましたら、アクセス2016は(.mdb)を使用することが出来るようですが、そのまま使用してよいのか、又、「accdb」にUP後のを使用するほうが良いのか、よくわかりません。
現在日常的にデータ更新しているのは2000、2002なので問題無ければ一気に2016へ行きたい所なのですが、どうでしょうか?
・ツリー全体表示

【13239】Re:フォームに新規抽出レコードを作成し...
回答  hatena  - 18/3/23(金) 13:49 -

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

>帳票フォームやデータシートを使用し、各ボックス(商品名、規格、発注数)を非連結の状態で1行目は抽出することができるのですが、その下に新規のレコードを表示させることが出来ません。
>テーブルに影響を与えず、抽出だけを何行も行えるようにするにはどうしたらいいでしょうか。

非連結では無理なので、各テキストボックスは連結にします。
フォームは帳票フォームかデータシートビューで。
フォームの
「更新の許可」と「削除の許可」を「いいえ」、「追加の許可」を「はい」に設定すれば、抽出されたレコードは更新や削除はできず、新規レコードのみ入力できるようになります。
・ツリー全体表示

【13238】フォームに新規抽出レコードを作成したい...
質問  花月  - 18/3/21(水) 14:27 -

引用なし
パスワード
   Access初心者です。
Access2010を使用し、テーブルに「フィールド1」➡商品名、「フィールド2」➡規格、「フィールド3」➡発注数を作成しています。
帳票フォームやデータシートを使用し、各ボックス(商品名、規格、発注数)を非連結の状態で1行目は抽出することができるのですが、その下に新規のレコードを表示させることが出来ません。
テーブルに影響を与えず、抽出だけを何行も行えるようにするにはどうしたらいいでしょうか。
説明下手で申し訳ありませんが、分かる方がいましたらよろしくお願いします。
・ツリー全体表示

【13237】Re:高速化のアドバイスをお願いします。
発言  りった  - 18/3/19(月) 10:43 -

引用なし
パスワード
   回答ありがとうございます。
(まだ全然理解しておりませんが、一旦返信まで。)
・ツリー全体表示

【13236】Re:高速化のアドバイスをお願いします。
発言  亀マスター  - 18/3/15(木) 22:05 -

引用なし
パスワード
   根本原因がどこにあるのかわからないので明確な回答はできないのですが、
参考になるかもというところでしたら。

接続が遅い場合
ht tp://q.hatena.ne.jp/1377926475

SQLの記述が問題の場合
(ここの「クエリパフォーマンスの定石を試すシリーズを参照)
ht tp://tsware.jp/labo/

エクセルへの転記に時間がかかる場合
ht tp://officetanaka.net/excel/vba/speed/s11.htm

ただし、ボトルネックとなるのがサーバーとの接続速度であれば、
これらを改善してもあまり効果は感じられないかもしれません。
・ツリー全体表示

【13235】Re:高速化のアドバイスをお願いします。
発言  りった  - 18/3/15(木) 17:53 -

引用なし
パスワード
   補足です。
EXCEL VBAから操作しています。
別拠点と共有のサーバーは、他の操作(ファイルコピー)も遅いです。
DBの定義等を変更することは可能です。
(DBとEXCELセットで動作が悪くならなければ、なんでも修正可能)

サーバーが重いこと自体は僕の守備範囲外なので、可能な範囲で速くしたいです。
・ツリー全体表示

【13234】高速化のアドバイスをお願いします。
質問  りった  - 18/3/15(木) 17:14 -

引用なし
パスワード
   ACCESSファイル(accdb)を別拠点と共有のサーバーに置いたらめちゃくちゃ遅くなりました。
ADODB.RecordsetのOpenに、2.464844秒かかります。
体感倍以上です。
キーを指定しして全属性(160個)を読みだすSQL文です。

高速化のためのアドバイスをお願いします。

・ACCESS以外のDBMSを使うのはハードルが高いです。
・ツリー全体表示

【13233】Re:画面リサイズを不可にするとタイトル...
お礼  バンブー  - 18/2/13(火) 11:47 -

引用なし
パスワード
   ▼hatena さん:
ご確認頂きありがとうございました。
先方に確認して頂き一旦はOKになりましたので、
ここまでの対応で完了にしておきます。

また、何かありましたらご教授宜しくお願い申し上げます。
・ツリー全体表示

【13232】Re:画面リサイズを不可にするとタイトル...
回答  hatena  - 18/2/12(月) 12:32 -

引用なし
パスワード
   >>あと、OSのバージョンも提示してください。
>Windows7
>Access2010,Access2016Runtime
>です。

動作検証してみました。
ただし、Windows7の環境はないのて、Windows10 で。
また、Runtimeもインストールしてないので、
Access2010 で作成して、Access2016のランタイムモードで検証しました。
症状は再現しませんでした。

>Access2010で作成し、Access2010で実行すると問題ないですが、
>Access2016Runtimeで実行すると症状が出ます。
>※Access2016で作成したものは多分ならないと思います。

特定の環境における現象だとすると原因究明や対策は難しいですね。

>ただ、タイトル部分にマウスを移動してタイトルをクリックするとまだ最小化/最大化/閉じるボタンがクラッシックスタイル表示に変わります。
>ダブルクリックしたり、クリックしたままドラッグ移動すると消えるのですが、何故そうなるのか不明です。

そうですか。残念ですね。

どうしても気になるようなら、最小化/最大化/閉じるボタンを表示にして、フォーム上に代替のボタンを配置するぐらいしかなさそうです。
・ツリー全体表示

【13231】Re:画面リサイズを不可にするとタイトル...
回答  バンブー  - 18/2/10(土) 20:29 -

引用なし
パスワード
   ▼hatena さん:
>動作検証できるように宣言部も含めて、実際に動作するコードを提示してもらえませんか。

Public Declare Function SetWindowPos Lib "USER32" _
  (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
   ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _
   ByVal fuFlags As Long) As Long
Public Declare Function GetSystemMenu Lib "USER32" _
  (ByVal hWnd As Long, ByVal fRever As Long) As Long
Public Declare Function RemoveMenu Lib "USER32" _
  (ByVal hMenu As Long, ByVal uItem As Long, ByVal fuFlags As Long) As Long
  

Public Const SWP_NOMOVE = &H2
Public Const HWND_TOP = &H0
Public Const SC_SIZE = &HF000
Public Const MF_BYCOMMAND = &H0&

Dim hWnd As Long

hWnd = Application.hWndAccessApp
SetWindowPos hWnd, HWND_TOP, 0, 0, 960, 720, SWP_NOMOVE
hWnd = GetSystemMenu(hWnd, 0)
RemoveMenu hWnd, SC_SIZE, MF_BYCOMMAND


>あと、OSのバージョンも提示してください。
Windows7
Access2010,Access2016Runtime
です。
Access2010で作成し、Access2010で実行すると問題ないですが、
Access2016Runtimeで実行すると症状が出ます。
※Access2016で作成したものは多分ならないと思います。

>Accessウィンドウを表示しない方法 Access2007以降版 - hatena chips
>hatenachips.blog.fc2.com/blog-entry-389.html
>
>
>なお、RemoveMenu や DeleteMenu でリサイズを無効にした場合、マウスをフォームの境界に持っていくと、リサイズ可能カーソルに変化するのに、リサイズできないという矛盾した状態になりますので、SetWindowLon で、WS_THICKFRAME属性を除去する方法の方が私は好みです。

ご教授ありがとうございます。
上記のURLを参考に、SetWindowLon で、WS_THICKFRAME属性を除去したらマウスをフォームの境界に持っていっても、最小化/最大化/閉じるボタンがクラッシックスタイル表示に変わらなくなりました。

変更した点は以下です。

Public Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Const SWP_DRAWFRAME = &H20
Public Const GWL_STYLE = (-16)
Public Const WS_THICKFRAME = &H40000

Wstyle = GetWindowLong(hWnd, GWL_STYLE)
Wstyle = Wstyle And Not WS_THICKFRAME
SetWindowLong hWnd, GWL_STYLE, Wstyle

を追加し、SetWindowPosを

SetWindowPos hWnd, HWND_TOP, 0, 0, 960, 720, SWP_NOMOVE Or SWP_DRAWFRAME

に変更。

ただ、タイトル部分にマウスを移動してタイトルをクリックするとまだ最小化/最大化/閉じるボタンがクラッシックスタイル表示に変わります。
ダブルクリックしたり、クリックしたままドラッグ移動すると消えるのですが、何故そうなるのか不明です。

何か原因が判りましたらご教授お願いいたします。
・ツリー全体表示

4 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free