Я только что столкнулся с неопределенной 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.