- 締切済み
access vba tif縦横サイズ取得について
Vba初心者です。 Tifの縦横サイズが取得したく、 下記ページにてコードを調べたところ、 3回以上連続起動すると最終判定で、 失敗になってしまいます。 なんとか改善できないでしょうか? okwave.jp/qa/q5143538.html
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
回答No.1
>3回以上連続起動すると最終判定で、 >失敗になってしまいます。 ご質問のページの幾つかある回答のうち、どのコードを使ったか書いてないので、どこをどう直せば良いとは回答出来ませんが「何が怪しいか?」は回答できます。 繰り返して使えないなら、ファイルの閉じ忘れ、リソースの開放し忘れ、ハンドルの閉じ忘れや開放忘れがあると思います。 明確な回答が欲しいなら、実際に使っているコードを質問に書くか、何番のアンサーのコードを使ったかくらいは書きましょう。回答者はエスパーじゃないんだから、どのコードを使ったか明記しないと明確な回答は不可能です。
お礼
回答ありがとうございます。 補足にコードを記載してみました。 原因が分かるようでしたら、 よろしくお願いいたします。
補足
以下、コードです。 Private Declare Function GdiplusStartup Lib "gdiplus" ( _ ByRef token As Long, _ ByRef inputBuf As GdiplusStartupInput, _ ByVal outputBuf As Long) As Long Private Declare Sub GdiplusShutdown Lib "gdiplus" ( _ ByVal token As Long) Private Declare Function GdipLoadImageFromFile Lib "gdiplus" ( _ ByVal FileName As Long, _ ByRef image As Long) As Long Private Declare Function GdipGetImageDimension Lib "gdiplus" ( _ ByVal image As Long, _ ByRef Width As Single, _ ByRef Height As Single) As Long Private Type GdiplusStartupInput GdiplusVersion As Long DebugEventCallback As Long SuppressBackgroundThread As Long SuppressExternalCodecs As Long End Type ' // 画像の幅と高さをピクセルで取得する Public Function GetImageDimensionFromFile( _ ByVal sImageFilePath As String, _ ByRef x As Long, _ ByRef y As Long _ ) As Boolean '@ 対応フォーマット : BMP, JPG, GIF, TIF, PNG, Dim uGdiStartupInput As GdiplusStartupInput Dim nGdiToken As Long Dim nStatus As Long Dim hImage As Long Dim xx As Single Dim yy As Single x = 0: y = 0 With uGdiStartupInput .GdiplusVersion = 1 End With nStatus = GdiplusStartup(nGdiToken, uGdiStartupInput, 0&) If nStatus = 0 Then nStatus = GdipLoadImageFromFile(ByVal StrPtr(sImageFilePath), _ hImage) If nStatus = 0 Then nStatus = GdipGetImageDimension(hImage, xx, yy) If nStatus = 0 Then GetImageDimensionFromFile = True x = xx y = yy End If End If Call GdiplusShutdown(nGdiToken) End If End Function Sub sample() Dim x As Long Dim y As Long If GetImageDimensionFromFile("C:\test3.tif", x, y) Then MsgBox CStr(x) & " x " & CStr(y) & " pix" Else MsgBox "失敗" End If End Sub