Excel не может открыть файл после сохранения с помощью макросов VBA - PullRequest
0 голосов
/ 22 апреля 2020

Я только что столкнулся с неопределенной c проблемой при разработке Excel VBA: когда файл сохраняется с помощью макроса, его нельзя открыть впоследствии.

Навигация и сохранение в файле разрешены, когда он после процедуры сохранения все еще открывается, но когда он закрывается и открывается снова, отображается следующее сообщение об ошибке: «Извините, мы не смогли найти C: \ test.xlsx. Возможно, он был перемещен, переименован или удален? "

Редактировать: Файл создан в соответствующем каталоге и может быть выбран в Windows Explorer

Файл не может быть открыт после этого точка.

Ниже приведена используемая процедура сохранения (код скопирован из двух источников, как указано).

Код выполняется после нажатия кнопки, добавленной на лист:

Sub btnSaveMacro()
    Helper.saveDialog
End Sub

Перенаправляет на процедуру сохранения, которую я скопировал из Как сохранить файл, выбранный в диалоговом окне Сохранить как?

' Source - https://stackoverflow.com/questions/29522278/how-to-save-a-file-selected-in-save-as-dialog
Sub saveDialog()
    'MsgBox ("Save")
    Dim varResult As Variant
    Dim ActBook As Workbook

    'displays the save file dialog
    varResult = Application.GetSaveAsFilename(FileFilter:= _
             "Excel Files (*.xlsx), *.xlsx", Title:="Save Report As", _
            InitialFileName:="C:\")

    'checks to make sure the user hasn't canceled the dialog
    If varResult <> False Then
        deleteAllButtons
        deleteAllVBACode
        ActiveWorkbook.saveAs Filename:=varResult, _
        FileFormat:=xlWorkbookNormal
        Exit Sub
    End If
End Sub

Это вызывает простую подпрограмму

* 102 2 *

и другой подпункт, скопированный с http://www.cpearson.com/excel/vbe.aspx

' Source - http://www.cpearson.com/excel/vbe.aspx    
Sub deleteAllVBACode()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule

    Set VBProj = ActiveWorkbook.VBProject

    For Each VBComp In VBProj.VBComponents
        If VBComp.Type = vbext_ct_Document Then
            Set CodeMod = VBComp.CodeModule
            With CodeMod
                .DeleteLines 1, .CountOfLines
            End With
        Else
            VBProj.VBComponents.Remove VBComp
        End If
    Next VBComp
End Sub

Когда подпрограмма saveDialog () заканчивается, я могу перемещаться и сохранять созданную книгу без проблем, но не могу повторно открыть файл из-за вышеприведенного сообщения об ошибке Excel.

Я несколько раз отлаживал код, но не смог найти причину.

Я хотел бы будьте счастливы получить некоторую помощь, поскольку я не очень знаком с сохранением процедур в VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...