MSプロジェクトマクロVBA


0

Excelから値を読み取るMS Projectでマクロを作成します。マクロは、Excelワークシート列内の特定の文字列の出現をカウントする必要があります。私は次のコードを使用します:

Set objXL = CreateObject("Excel.Application")
Set objWB = objXL.Workbooks.Open("D:\VBA\Design\" + FileName + ".xls")
Set ObjWS = objWB.Worksheets(1)   

ObjWS.Activate

Dim lastRow As Integer   
lastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row

Dim iVal As Double    
iVal = WorksheetFunction.CountIf(ObjWS.Range("A1:A" & lastRow), "Resource:" & "*")

問題:初めてコードを実行すると、

実行時エラー13型の不一致

どこiValで宣言されています。ただし、実行を停止して再度開始すると、このエラーは表示されません。

試した解決策:戻り値の型の値をInteger、Longなどに変更します。しかし、それでもエラーは続きます。

誰かが問題を追跡して解決策を見つけるのを手伝ってもらえますか?


質問を編集して、完全なコードを含めてください。
DavidPostill

回答:


1

ドキュメントには、その前に、あなたの割り当てが(ことを示唆しているlastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row)の問題である可能性があります。

あなたは宣言lastRow整数としてではなくドキュメントには、と述べている.RowためRangeだろうだけ長く読みください。これはなぜ2度目に機能するのかを説明していませんが、問題である可能性があります。


lastRowをLongに変更して解決策を試しましたが、問題は解決しません。問題は私の近い声明にあると思います:
16年

私の
最後の

objWB.Close savechanges:= False
samve

どういうわけか、最初にコードを実行すると、コードは正常に機能し、上記のステートメントも実行されます。しかし、コードを再度実行すると(Excelが「タスクマネージャ」ウィンドウでまだ実行されていることがわかります)、タイプミスマッチエラー13としてエラーがポップアップし、同じコードを3回目に実行するとファイルがロックされています。Excelファイルを完全に閉じる、または終了するにはどうすればよいですか?
-samve

この追加情報で質問を更新し、実際のcloseステートメント(および他のコード)も追加してください。Excelアプリケーションがまだ実行されている場合、タスクマネージャーでExcelプロセスを表示するのが理にかなっています。ファイル名に変数を使用しているときに、1つのファイルを開いていますか、それとも複数のファイルを開いていますか?どうやって呼ぶの?
セス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.