• ベストアンサー

「パラメーターが間違っています。」とエラーが出る

以下のVBAコードで「パラメーターが間違っています。」とエラーが出る原因は何でしょうか? Dim Img As Object Set Img = CreateObject("WIA.ImageFile") Img.LoadFile file.Path   <----- ここでエラー ローカルウインドウでは、file.Pathは問題なくstringの値が表示されています。 このマクロは、エラーが出ない場合もあり、 今回、たまたまエラーが出て処理が出来ずに悩んでいます。 なお、「Microsoft Windows Image Acquisition Library 2.0」を参照設定済みです 情報不足であれば追加で上げますので回答をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1625/2467)
回答No.1

エラーが出るときのファイル名に何か特別な文字が使われているとかはないでしょうか。

NuboChan
質問者

お礼

kkkkkmさん、回答有り難うございます。 アドバイスにより当該ファイルに問題と思われたので  チェックの結果ファイル自体が破損しているためjpgとして開けませんでした。 ファイルを新規に入れ替えてマクロが問題なく終了しました。 (他のフォルダー内のファイルに破損は有りませんでした。)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1625/2467)
回答No.2

ファイルの中で情報が壊れているとか他のアプリで確認してみてはいかがでしょう

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 画像をトリミングして(上書き)保存

    以下のコードで最終的に編集したImgを保存していますが Img.SaveFile outFile 同名ファイルがある場合は、エラーがでます。 エラー無く上書き保存するにはどのようにコードを編集すれば良いですか? Sub TrimImg() Dim folderPath As String Dim fso As Object Dim folder As Object Dim files As Object Dim file As Object Dim Img As Object Dim flag As Long folderPath = "C:\Users\TAC_\download\Yes\YES - Open your eyes - FULL ALBUM\" Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(folderPath) For Each file In folder.files If LCase(right(file.Name, 4)) = ".jpg" Or LCase(right(file.Name, 5)) = ".jpeg" Then flag = left(file.Name, 1) Set Img = CreateObject("WIA.ImageFile") Img.LoadFile file.Path Dim inputFile As String Dim outputFile As String 'Dim Img As Object 'As ImageFile Dim IP 'As ImageProcess Set Img = CreateObject("WIA.ImageFile") Set IP = CreateObject("WIA.ImageProcess") Select Case flag Case 1 inputFile = file.Path outputFile = folderPath & fso.GetBaseName(file.Name) & "(new)." & fso.GetExtensionName(file.Name) Img.LoadFile inputFile Dim imageWidth As Long Dim imageHeight As Long imageWidth = Img.width imageHeight = Img.height Dim left1 As Long Dim top1 As Long Dim right1 As Long Dim bottom1 As Long left1 = 0.2 * imageWidth top1 = 0 right1 = 0.2 * imageWidth bottom1 = 0 ModImage inputFile, outputFile, left1, top1, right1, bottom1 ' End Select End If Next file MsgBox "トリミングが完了しました。" End Sub Function ModImage(inFile As String, outFile As String, left As Long, top As Long, right As Long, bottom As Long) Dim Img As Object, IP As Object Set IP = CreateObject("WIA.ImageProcess") 'create WIA objects Set Img = CreateObject("WIA.ImageFile") Img.LoadFile inFile 'load image IP.Filters.Add IP.FilterInfos("Crop").FilterID 'setup filter With IP.Filters(1) .Properties("Left") = left .Properties("Top") = top .Properties("Right") = right .Properties("Bottom") = bottom End With Set Img = IP.Apply(Img) 'apply change '------------------------------------ ' 再整形 ' Dim imageWidth As Long ' Dim imageHeight As Long ' ' imageWidth = Img.width ' imageHeight = Img.height Dim NewWidth As Long Dim NewHeight As Long NewWidth = (Img.height + Img.width) / 2 NewHeight = (Img.height + Img.width) / 2 With CreateObject("WIA.ImageProcess") .Filters.Add .FilterInfos("Scale").FilterID .Filters(1).Properties("MaximumWidth") = NewWidth .Filters(1).Properties("MaximumHeight") = NewHeight .Filters(1).Properties("PreserveAspectRatio") = False Set Img = .Apply(Img) End With Img.SaveFile outFile End Function

  • CreateObjectでエラー

    VB初心者です。 VB6で以下のコードのCreateObjectがエラー になってしまいます。 何が原因と考えられますか? Dim objFileSys As Object CheckFileExist = False 'ファイルの有無を確認する Set objFileSys = CreateObject("Scripting.FileSystemObject")   ↑   ここで、エラーが発生 CheckFileExist = objFileSys.FileExists(S_strFileFull) Set objFileSys = Nothing   エラーメッセージが   「オートメーションエラーです。    ライブラリが登録されてません。」   と出てしまいます。何が原因と考えられますか?   よろしくお願いします。

  • VBからAccessへの接続でエラー

    OS:Win2K SP4 SOFT:VB6 ACCESS2K Dim strDatabase As String Dim cn As Object Dim rs As Object Sub xx() Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") strDatabase = "C:\出荷配送システム\mftbc.mdb" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strDatabase ・       ・       ・ End Sub 上記ソースの「cn.OPEN」メソッドでエラーが発生します。 エラー内容は 'OPEN'メソッドは失敗しました。'_Connection'オブジェクト データベースに接続できません。 です。 何が原因なんでしょうか?? mdbのあるPath,File名は合っています。

  • エラー3011

    パス名もきちんと設定し、データもあっているのですが オブジェクトが存在しないか、名前、パス名が違うと エラーがでてしまいます。どこが違うのでしょうか? Dim db As String Dim db_Mdb As DAO.Database Dim rd_Mdb As DAO.Recordset Dim stSQL As String db = "C:\XXX\VB\kanri.mdb"   'パス名は、アドレスをコピー貼り付けしたので間違いないと思います) ”省略(データベースに接続)” stSQL = "select * from name where bango=0001;" Set rd_Mdb = db_Mdb.OpenRecordset(stSQL, dbOpenTable) お願いしますm(__)m

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

  • 実行時エラー 76 パスが見つかりません。

    VBAのFileSystemObjectでフォルダをコピーしているのですが フォルダ1は問題なくコピーできるのですが 毎回フォルダ2だけは、 実行時エラー 76 パスが見つかりません。 と言うエラーになってしまいます。 Sub Sample() Dim myFSO As Object Dim MyPath As String MyPath = "C:\" Set myFSO = CreateObject("Scripting.FileSystemObject") myFSO.CopyFolder MyPath & "フォルダ2", MyPath & "新フォルダ2" Set myFSO = Nothing End Sub このようなコードなのですが、フォルダ1もフォルダ2も同じコードを使っています。 フォルダ2に関しては容量が10GBくらいありますが、フォルダが重すぎるのが原因でしょうか?

  • 早速やってみましたが、エラーが出てきてできません。

    早速やってみましたが、エラーが出てきてできません。  「ユーザー定義型が定義されていません。」と Dim DB As Database ここでとまってしまいます。 Help見たのですが、「オブジェクト ライブラリまたはタイプ ライブラリで定義する」とありました。 設定してみようとしたのですが、どれが必要なのかさっぱりわかりません。

  • SaveAsでバージョンを指定して保存する方法

    SaveAsでバージョンを指定して保存する方法が分かりません。 WINDOWS7 ACCESS2010のVBAから、EXCEL2000用のファイルとして保存するために、以下のようにしました ------------ Dim oApp As Object Dim oWkb As Object Dim oWks As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True oApp.DisplayAlerts = Flase '確認メッセージの非表示 Set oWkb = oApp.Workbooks.Open(filename:=CurrentProject.Path & "\" & MyFile, PassWord:="") ・ ・ ・ ↓ここで「オブジェクトがありません」と言うエラー oWkb.SaveAs CurrentProject.Path & "\" & MyFile, FileFormat:=xlExcel9795 どのようにしたら宜しいですか?

  • エクセルVBA:perlで作成したexeが失敗する

    VBAプログラムで詰まってしまったので質問します。 perlにて自作したexeファイルをexcelのボタンから開きたいのですが、 実行の途中で止まってしまうようなのです。 止まってしまうexeファイルは、自分でダブルクリックして起動すると正常動作する為、 原因がわかりません。 'Declare Function ShellExecute Lib "shell32.dll" _ 'Alias "ShellExecuteA" ( _ 'ByVal hwnd As Long, _ 'ByVal lpOperation As String, _ 'ByVal lpFile As String, _ 'ByVal lpParameters As String, _ 'ByVal lpDirectory As String, _ 'ByVal nShowCmd As Long) As Long 'lRet = ShellExecute(0, "open", sPASS, vbNull, vbNull, SW_NORMAL) 'With CreateObject("Wscript.Shell") ' .Run "***********************", 5 'End With 'MsgBox "vbCrLf & CurDir & vbCrLf" 'Shell "**********************", 1 'With CreateObject("Wscript.Shell") ' .Run "..************", 5 'End With 'Dim ret As Long 'With CreateObject("Wscript.Shell") ' ret = .Run("*************", 7, True) 'End With 'If ret <> 0 Then MsgBox "失敗しました": Exit Sub 'Shell "*****************************" 'Dim WSH 'Set WSH = CreateObject("Wscript.Shell") 'WSH.Run "*************************", 3 'Set WSH = Nothing 'Dim file As Variant 'file = Application.GetOpenFilename 'file = "****************** " + file 'Shell (file) 'On Error GoTo errline 'ret = ShellExecute(0, "open", "***************", "", Path, 1) 'errline: 'Err = 0 'Dim ファイルのあるフォルダ As String 'Dim ファイルの名前 As String 'Dim プログラムのパス As String 'Dim 拡張子 As String 'ファイルのあるフォルダ = Worksheets("Sheet1").Cells(1, 1) 'ファイルの名前 = Worksheets("Sheet1").Cells(2, 1) 'プログラムのパス = Worksheets("Sheet1").Cells(3, 1) '拡張子 = Worksheets("Sheet1").Cells(4, 1) 'Dim ファイルのパス As String 'ファイルのパス = ファイルのあるフォルダ & "\" & ファイルの名前 & "." & 拡張子 'Dim AppFp As String 'AppFp = プログラムのパス & " """ & ファイルのパス & """" '前の""はスペース空ける '「"」が特殊文字であるため、スキップするための文字(エスケープ文字)「"」を前につける 'Dim a As Integer 'a = Shell(AppFp, vbNormalFocus) '上記プログラム全部× Const vbHide = 0 'ウィンドウを非表示 Const vbNormalFocus = 1 '通常のウィンドウ、かつ最前面のウィンドウ Const vbMinimizedFocus = 2 '最小化、かつ最前面のウィンドウ Const vbMaximizedFocus = 3 '最大化、かつ最前面のウィンドウ Const vbNormalNoFocus = 4 '通常のウィンドウ、ただし、最前面にはならない Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない 'Dim objWShell 'Set objWShell = CreateObject("WScript.Shell") 'できたが×途中で終了している模様 'フォルダ「C:\happy」を開きます 'objWShell.Run "rundll32.exe url.dll" & _ ' ",**************", vbNormalFocus, False 'WScript.Echo "**********を実行しました!" 'Set objWShell = Nothing どうにかVBAから起動したいのですが、方法は無いでしょうか??

  • ACCESS2013のVBAで、EXCELを操作

    ご質問させて頂きます。 ACCESS2013のVBAで、EXCELを操作するために 下記のようにしています。 ------- Dim oApp As Object Dim oWkb As Object Dim oWks As Object Dim Rw As Integer Dim SQL As String Set oApp = CreateObject("Excel.Application") oApp.Visible = True oApp.DisplayAlerts = Flase '確認メッセージの非表示 ↓↓↓オートメーションエラー Set oWkb = oApp.Workbooks.Open(CurrentProject.Path & "\ひながた.xls") ------- 上記のところでオートメーションエラーになってしまいます。 しかし私の端末ではエラーは出ません。 問題と思われるのは エラーが出る人の端末は、 EXCELが2010と2013と 2つのバージョンがインストールされていることです。 このようなことでエラーが出てしまうことはあるのでしょうか?

専門家に質問してみよう