カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

既定のプログラムで実行させる

ACCESSにてURLを指定しWEBページを開きたい場合、InternetExplorerのパスを指定して実行させることも可能ですが、ユーザーが設定している既定のブラウザで実行させることも可能です。
その場合は以下のようにします。

1Dim ws As Object
2 
3Set ws = CreateObject("WScript.Shell")
4 
5ws.Run "http://www.yahoo.co.jp/", VbAppWinStyle.vbMaximizedFocus

このWScript.ShellのRunメソッドは、新しいプロセス内でプログラムを実行します。

ブラウザに限らず、他のプログラムでも応用することができます。
2番目の引数はウィンドウステータスを指定します。
主な設定例は以下の通りです。

VbAppWinStyle.vbHide 0
VbAppWinStyle.vbNormalFocus 1
VbAppWinStyle.vbMinimizedFocus 2
VbAppWinStyle.vbMaximizedFocus 3
VbAppWinStyle.vbNormalNoFocus 4
VbAppWinStyle.vbMinimizedNoFocus 6

また、上記では省略していますが、第3引数(bWaitOnReturn)にTRUEを指定すると、プログラムが終了するまでスクリプトの実行を待機します。

詳しくは参考URLをご覧ください。

参考URL
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

6,958 views

ADODB.Streamを使ったテキストファイルの読み書き

通常のテキストファイルの読み込みや書き込みだと文字コードがShift_jisでしか扱えません。
他の文字コードを使いたい場合はADODB.Streamを使います。

テキストファイルの読み込み

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim sr As Object
Dim strData As String
Set sr = CreateObject("ADODB.Stream")
sr.Mode = 3 '読み取り/書き込みモード
sr.Type = 2 'テキストデータ
sr.Charset = "UTF-8" '文字コードを指定
sr.Open 'Streamオブジェクトを開く
sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む
sr.Position = 0 'ポインタを先頭へ
strData = sr.ReadText() 'データ読み込み
sr.Close 'Streamを閉じる
Set sr = Nothing 'オブジェクトの解放
Dim sr As Object Dim strData As String Set sr = CreateObject("ADODB.Stream") sr.Mode = 3 '読み取り/書き込みモード sr.Type = 2 'テキストデータ sr.Charset = "UTF-8" '文字コードを指定 sr.Open 'Streamオブジェクトを開く sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む sr.Position = 0 'ポインタを先頭へ strData = sr.ReadText() 'データ読み込み sr.Close 'Streamを閉じる Set sr = Nothing 'オブジェクトの解放
Dim sr      As Object
Dim strData As String

Set sr = CreateObject("ADODB.Stream")

sr.Mode = 3 '読み取り/書き込みモード
sr.Type = 2 'テキストデータ
sr.Charset = "UTF-8" '文字コードを指定

sr.Open 'Streamオブジェクトを開く
sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む
sr.Position = 0 'ポインタを先頭へ

strData = sr.ReadText() 'データ読み込み

sr.Close 'Streamを閉じる

Set sr = Nothing 'オブジェクトの解放

続きを読む…»

230,710 views

フォームを開く/閉じる速度改善

MicroSoft ACCESSにて、フォームを開くとき、閉じるときの速度が遅い場合、
コードの書き方によって改善できることがあります。

以下のようにフォームを開くときにフィルターをかけていた場合

1Private Sub Form_Load()
2 
3    DoCmd.ApplyFilter , "[Where条件]"
4 
5End Sub

上記の場合でいくと開くときにも時間がかかり、
更には、閉じるときにも時間がかかってしまいます。

改善するには、開くときにフィルター条件を引数に与えてしまいます。

1Dim stDocName      As String
2Dim stLinkCriteria As String
3 
4stDocName = "[フォーム名]"
5stLinkCriteria = "[Where条件を指定]"
6 
7DoCmd.OpenForm stDocName, , , stLinkCriteria

この方法のほうが開く速度も閉じる速度も向上します。

13,602 views

クリップボードを扱う [VBA]

VBAでクリップボードのデータを扱うには、
Microsoft Forms 2.0 Object Libraryへの参照設定が必要です。

参照設定なしにクリップボードのデータを扱うには

1Dim ClipB    As Object
2 
3Set ClipB = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
4 
5ClipB.GetFromClipboard
6MsgBox ClipB.GetText 'クリップボードの文字列を表示
7 
8ClipB.SetText "テスト"
9ClipB.PutInClipboard 'クリップボードにデータを送信
10 
11Set ClipB = Nothing
7,180 views

VBA CInt関数の注意点

CInt関数はデータ型を変換する際に使用する関数ですが、小数点以下の扱いがRound関数とは異なります。
CInt関数の場合は、四捨六入となり、0.5の場合のみ最も近い偶数に丸められます。

ここまでは通常の四捨五入と同じなのでわかりやすいと思います。

しかし、0.5だった場合だけ動作が異なります。

となります。

3,912 views