• 締切済み

access vba tif縦横サイズ取得について

Vba初心者です。 Tifの縦横サイズが取得したく、 下記ページにてコードを調べたところ、 3回以上連続起動すると最終判定で、 失敗になってしまいます。 なんとか改善できないでしょうか? okwave.jp/qa/q5143538.html

みんなの回答

回答No.1

>3回以上連続起動すると最終判定で、 >失敗になってしまいます。 ご質問のページの幾つかある回答のうち、どのコードを使ったか書いてないので、どこをどう直せば良いとは回答出来ませんが「何が怪しいか?」は回答できます。 繰り返して使えないなら、ファイルの閉じ忘れ、リソースの開放し忘れ、ハンドルの閉じ忘れや開放忘れがあると思います。 明確な回答が欲しいなら、実際に使っているコードを質問に書くか、何番のアンサーのコードを使ったかくらいは書きましょう。回答者はエスパーじゃないんだから、どのコードを使ったか明記しないと明確な回答は不可能です。

ban10311031
質問者

お礼

回答ありがとうございます。 補足にコードを記載してみました。 原因が分かるようでしたら、 よろしくお願いいたします。

ban10311031
質問者

補足

以下、コードです。 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

関連するQ&A