Я открываю существующий файл xlsx и добавляю новый рабочий лист. Тогда я просто хочу сохранить файл.vba Workbook.Save сохраняет в другой каталог
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open(fileName:=pathToFile, Editable:=True, ReadOnly:=False)
Set ws = wb.Worksheets.Add()
ws.Name = "newSheet"
ws.range("A1").CopyFromRecordset rs
wb.Save
wb.Close
Но wb.Save сохраняет файл в $ Users \ Документы, хотя это не исходный каталог, откуда я открыть файл.
Любые идеи, почему VBA это делает?
Я также пробовал wb.SaveAs pathToFile, но это вызвало ошибку. И wb.Close SaveChanges: = True тоже не работает.
Мне нужно сохранить этот файл по тому же пути и имени.
Конечно, я мог бы сделать wb.SaveAs pathToFile & «_tmp», удалить старый и переименовать новый файл. Но почему Save не работает?
EDIT
Dim strCon As String: strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path\file.xlsx;Mode=Read;Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Dim sql as String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
rs.Open Source:=sql, ActiveConnection:=cn
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open(fileName:=path\file.xlsx, ReadOnly:=False)
Set ws = wb.Worksheets.Add()
ws.Range("A1").CopyFromRecordset rs
rs.Close
cn.Close
wb.Save
wb.Close
Какая ошибка у вас возникла при попытке «wb.SaveAs pathToFile»? защищена ли рабочая книга каким-либо образом? откройте рабочую книгу и проверьте, есть ли какой-либо код в процедуре 'Private Sub Workbook_BeforeSave (Cancel As Boolean)' в модуле * ThisWorkbook * –
Ошибка: доступ запрещен для защищенного от записи документа -pathToFile-. (Перевод с немецкого). Это может быть потому, что файл все еще открыт.В Beforeclose нет кода, и книга не защищена. – ooorndtski
Я попытался скопировать файл вручную. Теперь есть file.xlsx и file2.xlsx. Если я открою файл.xlsx, создайте новый рабочий лист и напишите некоторые данные и используйте wb.SaveAs Filename: = file2.xlsx его работу. Существующий файл2.xlsx будет перезаписан. Похоже, что file.xlsx где-то не был закрыт. Я проверю это позже. – ooorndtski