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

Accessからはできないフリガナの割り付け

WindowsXPでは[Excelオブジェクトを使用してフリガナ入力]で紹介しているように、Accessだけで可能だったフリガナ変換が、Windows7では出来なくなっていました。
色々と方法を模索してはみたものの、解決策が見つかっていませんでした。

そして今日、なんとなく改めて挑戦してみると…なんと!(それほど大したことではありませんが;)方法が見つかりました!
といっても結局、Accessだけではできない、というのが結論です。
つまりExcelを使って実装することになります。

PHONETIC

まず、Excelの「PHONETIC」という関数。
これはセルに入力した文字のフリガナを取得することができます。

例としてこのようなExcelを用意してみます。
001
続きを読む…»

4,984 views

Public宣言された変数に有効期間がある落とし穴

VBAで標準モジュールにPublic変数を宣言、またはPrivate変数を宣言してPublicプロシージャで値を書き換える処理を構築した場合、予期せず、変数に格納したはずの値がクリアされることがあります。

実際にACCESSで、汎用的に使えるようにと私もそのような方法で書いたのですが、上記のような事象が発生したので今回調べてみました。

答えはマイクロソフトのサポートページにありました。
どうやら標準モジュールでPublic宣言した変数であっても、意図しないタイミングで変数の値が破棄されることがあるようで、そのようなプログラミング手法は推奨されていないようです。
続きを読む…»

20,404 views

便利なApplicationメソッド ACCESS

DLookupやDCount等はよく使うのですが、他にも便利なメソッドがあったのでご紹介します。

DAvg

指定した数値フィールドの平均値を取得します
返り値は倍精度浮動小数点型(Double)です

DCount

レコード件数を取得します

DFirst

先頭レコードの指定フィールドの値を取得します

DLast

最終レコードの指定フィールドの値を取得します

DLookup

指定したフィールドの値を取得します

DMax

指定フィールドの最大値を取得します

DMin

指定フィールドの最小値を取得します

DSum

指定フィールドの合計値を取得します


書式

DLast(Expr, Domain, Criteria)
続きを読む…»

2,200 views

ACCESS Excelファイルに画像を挿入

まずは変数を宣言します。

Dim xlApp   As Object
Dim xlBook  As Object
Dim xlSheet As Object

各オブジェクトを作成します。

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open([Excelファイルのフルパス])
Set xlSheet = xlBook.WorkSheets(1)

ワークシートオブジェクトをwithブロックで使用します。

With xlSheet

画像を貼り付けしたい起点(左上)のセルを選択します。

.Range("A1").Select

withブロックが入れ子になりますが、画像オブジェクトとしてアクセスできるようにします。 続きを読む…»

9,207 views

Outlookメッセージファイル(.msg)からデータを取り出す – VBA

Outlookのメッセージファイル(.msg)から送信元アドレスや件名、本文等のデータを取り出すことができます。
よくあるのは、受信トレイのメールからデータを取り出したりしますが、今回は任意の場所にコピーしたメッセージファイル(.msg)からデータを取り出す方法をご紹介します。

まずは宣言

Dim OL  As Object
Dim msg As Object

Outlookオブジェクトを生成

Set OL = CreateObject("Outlook.Application")

msgファイルを指定

strFileName = "c:\sample.msg"

メッセージファイルをオブジェクトに読み込む

Set msg = OL.CreateItemFromTemplate(strFileName)

各種データを取得します。

Debug.Print "SentOnBehalfOfName: " & msg.SentOnBehalfOfName
Debug.Print "SenderName: " & msg.SenderName
Debug.Print "ReceivedByName: " & msg.ReceivedByName
Debug.Print "ReceivedOnBehalfOfName: " & msg.ReceivedOnBehalfOfName
Debug.Print "ReplyRecipientNames: " & msg.ReplyRecipientNames
Debug.Print "To: " & msg.To
Debug.Print "CC: " & msg.CC
Debug.Print "BCC: " & msg.Bcc
Debug.Print "Subject: " & msg.Subject
Debug.Print "Body: " & msg.Body
Debug.Print "HTMLBody: " & msg.HTMLBody
'Debug.Print "Recipients: " & msg.Recipients
Debug.Print "SenderEmailAddress: " & msg.SenderEmailAddress

プロパティについてはMSDNを参照しましたが、Recipientsはプロパティが存在しないとエラーが発生したのでスキップしています。
続きを読む…»

71,146 views