Frage

Ich habe einen VBA-Makro geschrieben, das ein HTML-Dokument in Excel (um verschiedene Berechnungen auf sie auszuführen) öffnet. Excel wird für das HTML-Dokument im aktuellen Ordner suchen. Wenn es nicht dort finden kann, wird es eine Datei öffnet Feld erzeugen, wo der Benutzer manuell an die Stelle des HTML-Dokuments blättern. Alles war gut bis jetzt. Allerdings sollte der Benutzer auswählen, Abbrechen (anstatt eine Datei auswählen), I Excel möchte eine Nachricht anzuzeigen und zu beenden.

Die Nachricht erzeugt wird, aber dann der Code stoppt mit dem folgenden Fehler:

Laufzeitfehler ‚424‘:. Objekt erforderlich

Das klingt nicht allzu viel Aufwand, aber ich habe in eine Mauer läuft nach dem anderen zu nageln versuchen, was das Problem verursacht.

Die Unter, die nicht zu funktionieren scheint einfach sind:

Sub ExitWithoutPrompt()

MsgBox "You failed to select a file, therefore Excel will now close.  Please refer to the readme file."
Excel.Application.DisplayAlerts = False
Excel.Application.Quit

End Sub

Ich bin mit MS Excel 2002, aber ich bin daran interessiert, die Lösung auf, so viele Varianten von Excel wie möglich zu arbeiten.

Jede Hilfe erhielt dankbar darüber, wo ich falsch werde. Ich bin ein kompletter Neuling von der Art und Weise, so dass, wenn überhaupt möglich, bitte langatmige mit jeder Anleitung, die Sie für mich haben könnten ...

Wie es von Nutzen sein könnte unten enthalten (mit dem Risiko, machen diesen Beitrag unhandlich) sind die anderen beiden U-Boote ich im Makro bin mit:

Die erste Unter:

Sub Endurance()

Call OpenHTML

Range("G27").Value = "Category"
Range("G28").Value = "Meat"
Range("G29").Value = "Veg"
Range("G30").Value = "PRP"
Range("F27").Value = "Fleet"
Range("E27").Value = "Consumption"

Range("E32").Value = "Endurance"

Range("E33").Value = "Lowest Category"
Range("E34").Value = "Fleet"
Range("E35").Value = "Consumption"

Range("E27, F27, G27, E32").Font.Bold = True
Range("F28").Value = WorksheetFunction.Sum(Range("E8,E9,E11,E14,E21"))
Range("E28").Value = WorksheetFunction.Sum(Range("G8,G9,G11,G14,G21"))
Range("F29").Value = WorksheetFunction.Sum(Range("E10,E16"))
Range("E29").Value = WorksheetFunction.Sum(Range("G10,G16"))
Range("F30").Value = WorksheetFunction.Sum(Range("E20,E22"))
Range("E30").Value = WorksheetFunction.Sum(Range("G20,G22"))

Columns("E:F").EntireColumn.AutoFit

Range("G28:G30, E27, F27, G27, G33").Select
    With Selection
        .HorizontalAlignment = xlRight
    End With

Range("E27:G30, E32:G35").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone


Dim Endurance As Double
Endurance = WorksheetFunction.Min(Range("F28:F30"))
Range("G34").Value = WorksheetFunction.RoundDown(Endurance, 0)

Endurance = WorksheetFunction.Min(Range("E28:E30"))
Range("G35").Value = WorksheetFunction.RoundDown(Endurance, 0)

Range("G33").Value = Endurance

Dim LowCat As String

LowCat = WorksheetFunction.VLookup(Endurance, Range("E28:G30"), 3, False)
Range("G33").Value = LowCat

ActiveSheet.PageSetup.PrintArea = "$A$1:$G$35"
ActiveSheet.PageSetup.Orientation = xlLandscape

Range("G36").Select

If MsgBox("Print endurance statement?", vbYesNo + vbDefaultButton2, "Print endurance") = vbYes Then
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Else
    Range("G36").Select
    End If


End Sub

Und die zweite Unter:

Sub OpenHTML()

On Error GoTo MissingFile

Workbooks.Open FileName:=ThisWorkbook.Path & "\TRICAT Endurance Summary.html"


Exit Sub

MissingFile:

Dim Finfo As String
Dim FilterIndex As Integer
Dim Title As String
Dim FileName As Variant

' Set up list of file filters
Finfo = "HTML Files (*.html),*.html," & _
        "All Files (*.*),*.*,"

' Display *.html by default
    FilterIndex = 1

' Set the dialog box caption
Title = "Select TRICAT Endurance Summary"

' Get the filename
FileName = Application.GetOpenFilename(FInfor, FilterIndex, Title)

' Handle Return info from dialog box
If FileName = False Then
    Call ExitWithoutPrompt
    Else
    MsgBox "You selected" & FileName
    Workbooks.Open FileName

End If

End Sub

Wenn Sie schon so weit gekommen, vielen Dank für das Lesen ....

War es hilfreich?

Lösung

Anruf hinzufügen ActiveWorkbook.Close ExitWithoutPrompt:

Sub ExitWithoutPrompt()
    MsgBox "You failed to select a file, therefore Excel will now close.  Please refer to the readme file."
    Excel.Application.DisplayAlerts = False
    Excel.Application.Quit
    ActiveWorkbook.Close False
End Sub

Dies funktioniert für mich unter Excel 2003.

Aus irgendeinem Grund die Reihenfolge Application.Quit und ActiveWorkbook.Close des Aufrufs ist wichtig. Counter-intuitiv, zumindest für mich, wenn Sie ActiveWorkbook.Close vor Application.Quit rufen Sie noch die Störung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top