Функция VBA "Kill" не работает на 32-битной системе - PullRequest
0 голосов
/ 10 октября 2018

решено : проблема была связана с путем, Dropbox в некоторых планшетах не был расположен в правильном пути.

Приведенный ниже код работает только на 64-разрядной системе, и япо какой-то причине не может заставить его работать на 32-битных системах.В попытке удалить файл отказано в разрешении.

В основном код ниже сохраняет текущий файл в новой папке, а затем удаляет текущий файл, чтобы файл не был сохранен в 2 папках.Я не могу найти аналогичную функцию для удаления текущего файла, кроме "Kill".Есть идеи?

Sub RenameFile()

Dim thisWb As Workbook
Set thisWb = ActiveWorkbook

MyOldName = ActiveWorkbook.FullName
Call MoveToNextFolder 'this calls a macro that saves the file in a different folder
Kill MyOldName 'here's where I'm getting the error
ActiveWorkbook.Close

End Sub

Sub MoveToNextFolder()
Dim strFilename, strDirname, strPathname, strDefpath As String
 On Error Resume Next ' If directory exist goto next line
 Calculate
 If Range("AN1").Value = "" Then
 ActiveCell.Offset(0.1).Select
 Else
 GoTo Step1
 End If
 If Range("AO1").Value = "" Then
 ActiveCell.Offset(0.1).Select
 Else
 GoTo Step1
 End If
 If Range("AP1").Value = "" Then
 ActiveCell.Offset(0.1).Select
 Else
 GoTo Step1
 End If
 If Range("AQ1").Value = "" Then
 MsgBox ("Nowhere else to move the file, it's already in the delivered folder")
 Exit Sub
 Else
 GoTo Step1
 End If

Step1:
strDirname = Range("AK2").Value ' New directory name

strFilename = Range("AM1").Value 'New file name
strDefpath = Application.ActiveWorkbook.Path 'Default path name
If IsEmpty(strDirname) Then Exit Sub
'If IsEmpty(strFilename) Then Exit Sub

MkDir strDirname
strPathname = strDirname & strFilename 'create total string

ActiveWorkbook.SaveAs Filename:=strPathname & ".xlsb", _
FileFormat:=xlExcel12, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

1 Ответ

0 голосов
/ 10 октября 2018

Резервное копирование файла Excel

Вам придется отредактировать это в соответствии с вашими потребностями.

Sub BackupFile()
'Description
  'Saves this file in a subfolder and kills (erases) it (the file) or,
  'moves this file to a subfolder.
'Preconditions
  '"thisWb" is an open workbook where this procedure in a module resides.
  '"Test" is a subfolder created in the same folder where thisWb resides.

  'Remarks
    'Kills (erases) means there is no copy in the Recycle Bin.
    'If 'thisWb' and 'Test' were on different drives this code would have to be
    'carefully modified.

  Dim MyOldName As String
  Dim thisWb As Workbook

  Set thisWb = ActiveWorkbook

  'You have just made a reference of 'ActiveWorkbook' to 'thisWb',
  'why use 'ActiveWorkbook' any more?
'  MyOldName = ActiveWorkbook.FullName

  MyOldName = thisWb.FullName

  'Remarks
    'If the argument of the ChDrive statement is a multiple-character string,
    'ChDrive uses only the first letter.
    'The CurDir function will return different strings (paths) depending on the
    'way an Excel file is being opened.

  'Prevent 'Run-time error 1004' due to different drives.
  ChDrive thisWb.Path
  'Prevent 'Run-time error 1004' due to different CurDir paths.
  ChDir thisWb.Path

  thisWb.SaveAs "Test\" & thisWb.Name

  Kill MyOldName

  ActiveWorkbook.Close

End Sub

Если вы все еще получаете ошибку, попробуйте настроить (изменить) текущий каталог (chDir), CurDir) или измените диск (ChDrive) или, что еще лучше, покажите процедуру MoveToNextFolder.

...