MS Projekt Makro VBA

640
samve

Schreiben eines Makros in MS Project, das Werte aus Excel liest. Das Makro sollte das Auftreten einer bestimmten Zeichenfolge in der Excel-Arbeitsblattspalte zählen. Ich verwende den folgenden Code:

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:" & "*") 

Problem: Wenn ich den Code zum ersten Mal starte, bekomme ich

Laufzeitfehler 13 Typenkonflikt

wo iValwird erklärt. Nachdem die Ausführung angehalten und erneut gestartet wurde, wird dieser Fehler nicht angezeigt.

Versuchte Lösungen: Ändern des Rückgabetyps in Integer, Long usw. Der Fehler bleibt jedoch bestehen.

Kann mir jemand helfen, das Problem aufzuspüren und eine Lösung zu finden?

0
Bitte [bearbeiten] Sie die Frage und geben Sie den vollständigen Code an. DavidPostill vor 7 Jahren 0

1 Antwort auf die Frage

2
Seth

Die Dokumentation legt nahe, dass Ihre Aufgabe davor ( lastRow = ObjWS.Range("A" & ObjWS.Rows.Count).End(xlUp).row) das Problem sein könnte.

Sie deklarieren lastRowals Integer, aber die Dokumentation besagt, dass .Rowfür einen RangeNur-Lese-Vorgang lang sein würde. Dies erklärt nicht, warum es beim zweiten Mal funktioniert, aber es könnte das Problem sein.

Ich habe die Lösung ausprobiert, indem ich lastRow in Long geändert habe, aber das Problem bleibt bestehen. Ich denke, das Problem liegt in meiner engen Aussage: samve vor 7 Jahren 0
Meine enge Aussage ist: samve vor 7 Jahren 0
objWB.Close Savechanges: = False samve vor 7 Jahren 0
Irgendwie funktioniert der Code gut, wenn ich meinen Code zuerst ausführte, und die obige Anweisung wird ebenfalls ausgeführt. Aber wenn ich den Code erneut ausführen (ich finde, dass noch ein Excel im 'Task-Manager'-Fenster ausgeführt wird), wird der Fehler als Typenkonfliktfehler 13 angezeigt. Wenn ich zum dritten Mal denselben Code ausgeführt habe, ist die Datei gesperrt. Wie kann ich eine Excel-Datei vollständig schließen oder beenden? samve vor 7 Jahren 0
Aktualisieren Sie die Frage mit diesen zusätzlichen Informationen und fügen Sie die tatsächliche close-Anweisung (und möglicherweise den anderen Code) hinzu. Wenn Ihre Excel-Anwendung noch läuft, ist es sinnvoll, einen Excel-Prozess in Ihrem Task-Manager zu sehen. Öffnen Sie eine oder mehrere Dateien, wenn Sie eine Variable für den Dateinamen verwenden? Wie nennst du das? Seth vor 7 Jahren 0