query: tag:VBA

最近、僕が作ってる某学会のシステムのコードをそのままコピペ。

ここでは都合上「アプリケーションの実行パス」となっていますが、気にしないでください。

asp>>
' プロシージャ: Function
' 名前 : GetAppExecPath
' 機能 : アプリケーションの実行パスを取得する
' 引数 : なし
' 戻り値 : String
' 備考 : なし
Public Function GetAppExecPath() As String

GetAppExecPath = CurrentProject.Path & "\"

End Function
<<asp

たとえば、開いているデータベースファイルが "C:\Documents and Settings\y_tsuda\My Documents\test.mdb" だとすると、"C:\Documents and Settings\y_tsuda\My Documents" を返してくれます。

開いているデータベースがどこのディレクトリにあるのかを取得するには、

asp>>
'C:\Documents and Settings\y_tsuda\My Documents
CurrentProject.Path
<<asp

を使います。

ただ、このままだと最後に \ がついていないので、

asp>>
'C:\Documents and Settings\y_tsuda\My Documents\ <- \が入る
CurrentProject.Path & ""
<<asp

としておくのがいろいろと都合がいいと思います。

この CurrentProject オブジェクトには現在開いているデータベースについての情報が入ってそう(名前からして・・・)なので、いろいろと見てみると面白いかもしれません。

posted by y_tsuda y_tsuda on Tue 13 Jan 2009 at 19:00 with 0 comments

[Access VBA] 任意のコマンドを実行するで書いた、Shell関数を使ったVBAでの任意のコマンドの実行方法は非同期なものだと知りました。

Shell関数は任意のコマンドを実行し、コマンドの終了を待たずにShell関数の呼び出し以降のステートメントが実行されていきます。

それではあまりうれしくないときがあるので、同期実行する方法を以下に示します。

この方法を使うと、呼び出したコマンドが終了してから、以降のステートメントが実行されていきます。

以下、ソースコード。
asp>>
Dim strShellCommand As String ' シェルコマンド
Dim objWSH As Object ' WSH

strShellCommand = " " ' 実行したいコマンド

' WSHを使ってコマンドを実行する
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行
Set objWSH = Nothing
<<asp

ソースを見るとなんとなくわかるかもしれませんが、WSHを使います。

第1引数は、コマンドを入れてあげます。

第2引数は、WindowStyleを入れてあげます。ここに入る値は、Shell関数のと同じです。

第3引数は、同期実行ならTrue、非同期実行ならFalseを入れてあげます。

See Also

posted by y_tsuda y_tsuda on Fri 9 Jan 2009 at 19:25 with 0 comments

asp>>
Function FunctionName(引数) As 型
FunctionName = 返したい値 '←これがReturnに相当するらしい。
End Function
<<asp

らしい・・・。

たとえば、Exampleという名前のFunctionがあるとすると、最後にExampleという変数に値を代入することによってReturnできる

VisualBasicではReturnってあった気が・・・。
これがVBAのワナなのか・・・。

Access2003を今使ってるけど、2007やったらReturnできたりするんやろうか。

posted by y_tsuda y_tsuda on Thu 8 Jan 2009 at 15:02 with 0 comments

Access VBAから任意のコマンドを実行したいとき、 ** Shell **関数を使います。

Shell関数の定義は、

asp>>
Shell(PathName
[, WindowStyle As VbAppWinStyle = vbMinimizedFocus]
) As Double
<<asp

です。

WindowStyleは省略可能で、省略した場合は、vbMinimizedFocusという値をとります。

WindowStyleは他には以下のような種類があります。

|caption=WindowStyleの種類
|
|種類 , 説明
|
|vbHide , 非表示
|vbMaximizedFocus , 最大化、フォーカスする
|vbMinimizedFocus , 最小化、フォーカスする
|vbMinimizedNoFocus , 最小化、フォーカスしない
|vbNormalFocus , 普通、フォーカスする
|vbNormalNoFocus , 普通、フォーカスしない

たとえば、

asp>>
Private Sub 実行_Click()
Call Shell("notepad", vbMaximizedFocus)
End Sub
<<asp

というコードを書くと、notepadを実行し、ウィンドウは最大化された状態で表示され、フォーカスされます。

posted by y_tsuda y_tsuda on Sun 4 Jan 2009 at 18:06 with 0 comments