2016年10月23日

DAOとADO(2)

5年前、DAOとADOというタイトルの記事を書きました。

その時は、DAO中心で書きつつ、両方勉強すれば良いのかなぁなんてことを書きましたが、それから5年、ADOなんか一切使ってませんw

しかぁし、最近になって初めて、データベースは「SQL Server」フロントエンドは「Access」を使用するというお仕事がありました。

そういえば、Access以外のデータベースを使用する場合はADOを使った方が良かったはず……と、思い出し、初めて仕事でADOを書く機会がありました。

今となってみれば、別に突然ADOを使うことになったところで、対して戸惑うこともなく対応でき……、まぁ、必要な時に必要なことを調べ、必要なコードをかければよいのかな……と思う次第です。

さて、せっかくなので今回も速度差を測ってみました。

残念ながら、あまり大きなテーブルがなかったのですが、「SQL Server」のテーブルの場合、DAOで16秒かかる処理がADOで2秒で終わりました。

そんなワケで。

5年前に書いた記事のいまさらの裏付けです。

Accessデータベースの場合はDAOを使い、それ以外のデータベースではADOを使う!!
【関連する記事】
posted by 寸志 at 10:36| Comment(0) | コラム | このブログの読者になる | 更新情報をチェックする

2016年10月22日

たまには本のオススメを

VBAで困った時って、大体検索すれば、解決するんですが、なかなか検索してもヒットしないような知識が満載の本を見つけました。
タイトルには「Excel VBA」と書いてありますが、アクセスでもワードでもパワポでもVBAを使うのであれば、間違いなく応用のきく知識です。
ただし、中上級者向けだとは思いますが。
てか、初級者向けの本は山ほどあり、本なんか買わなくても良いサイトが沢山ありますよね。(このブログもそうでありたいw)
とりあえず、「VBAで大概の問題は解決できるぜぃ!!」って方は、次のステップとして、この本を読んでみてください。

大村あつし の Excel VBA Win64/32 APIプログラミング

新品価格
¥4,320から
(2016/10/23 09:41時点)


posted by 寸志 at 23:59| Comment(0) | コラム | このブログの読者になる | 更新情報をチェックする

2016年05月11日

サムネイル画像一括作成

はたして、VBAで画像処理までしてしまう意味はあるのだろうか。
高機能なものを求めるならば、PhotoShop+Javascriptでドロップレットを作るのが手っ取り早い気がする。

機能:
beforeフォルダ内に入れた画像を縮小し、sample.pngファイルをスタンプとして押した画像をafterフォルダ内に出力する。

使い方:
@まずはWIAライブラリを参照設定する。
Microsoft Windows Image Acquisition Library v2.0

Aこのプログラムと同一フォルダ内に必要なフォルダとファイルを準備する。
1.フォルダ名:before (処理前の写真をここに入れる。)
2.フォルダ名:after (処理済みデータがここに出力される。)
3.ファイル名:sample.png (縮小後の画像にスタンプとして押すデータ。「sample」と書かれた半透明のデータなどがベスト)

Bbeforeフォルダ内に写真を格納して、exec()を実行

※かなり適当に作ったので、必要に応じて数値は調整してください。

Sub exec()

Dim filePath As String
Dim searchFileName As String
Dim currentFileName As String

filePath = ThisWorkbook.Path & "\before\"

'ディレクトリ関数の準備
searchFileName = filePath & "*"
currentFileName = Dir(searchFileName, vbNormal)

Do While currentFileName <> ""

'不要なファイルをはじくための処理
If currentFileName Like "*.jpg" Or _
currentFileName Like "*.jpeg" Or _
currentFileName Like "*.png" Or _
currentFileName Like "*.gif" Then
If GetAttr(filePath & currentFileName) <> vbDirectory Then

Call makeNewImage(currentFileName)

End If
End If

currentFileName = Dir

Loop

MsgBox "完了"

End Sub

Sub makeNewImage(fileName As String, Optional ByVal newName As String = "")

Dim filePath As String

filePath = ThisWorkbook.Path & "\"

Dim Img As WIA.ImageFile
Dim sample As WIA.ImageFile
Dim IP As WIA.ImageProcess
Set Img = CreateObject("WIA.ImageFile")
Set sample = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")

Img.LoadFile filePath & "before\" & fileName
sample.LoadFile filePath & "sample.png"

IP.Filters.Add IP.FilterInfos("Scale").FilterID
IP.Filters(1).Properties("MaximumWidth") = 240
IP.Filters(1).Properties("MaximumHeight") = 240

IP.Filters.Add IP.FilterInfos("Stamp").FilterID
IP.Filters(2).Properties("ImageFile") = sample
IP.Filters(2).Properties("Top") = 10
IP.Filters(2).Properties("Left") = 10

Set Img = IP.Apply(Img)

If newName = "" Then newName = fileName
Img.SaveFile filePath & "after\" & newName

End Sub
posted by 寸志 at 21:07| Comment(0) | VBA応用 | このブログの読者になる | 更新情報をチェックする

↓よろしければクリックをお願いいたします。

ブログランキング・にほんブログ村へ
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。