vba使用变量杀死文件

时间:2017-07-06 08:33:14

标签: excel vba excel-vba

我编写的代码存储了打开的原始文件,作为变量fileName,用于保存文件的新版本,名称略有不同。我已经编写了代码来杀死原始文件,但它的表现并不像它应该的那样。

我在kill line上找不到文件。

 'Deletes the original copy
  Kill "S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" & fileName & 
  ".txt"


   Sub BACSConversion()

   Dim MyNewBook As String
   Dim MySaveFile As String
   Dim fileToOpen As Variant
   Dim fileName As String
   Dim sheetName As String
   Dim rCopy As Range

  'Turn off display alerts
   Application.DisplayAlerts = False
  'Turn off screen updates
   Application.ScreenUpdating = False

   'Ensures that the file open directory is always the same
   ChDir "S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\"

  'Opens the folder to location to select txt file
   fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If fileToOpen <> False Then
    Workbooks.OpenText fileName:=fileToOpen, _
    DataType:=xlDelimited, Tab:=True
    End If
'Creates the file name based on txt file name
fileName = Mid(fileToOpen, InStrRev(fileToOpen, "\") + 1)
'Creates the sheet name based on the active txt file
sheetName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)

  'Rename the original text file
   ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
   Limited\" 
   & "DNU_" & fileName & ".txt")

'Save active file as...
 ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
 Limited\BACS File Original\" & _
   fileName & ".CSV"), FileFormat:=xlCSV

 'Selects all data in column A and copies to clipboard
   Set rCopy = Range("A1", Range("A1").End(xlDown))

 'Open the original document where the BACS file is located
  Workbooks.Open "S:\Accounts (New)\Management Information 
 (Analysis)\Phil 
  Hanmore - Analysis\bacs conversation calc.xlsx"
 'Selects the worksheet called "Original"
  Sheets("Original").Range("A:A").ClearContents

  'Paste selected values from previous sheet
    rCopy.Copy
   Sheets("Original").Range("A1").PasteSpecial Paste:=xlPasteValues

  'Selects appropriate worksheet - Non-MyPayFINAL
   Sheets("Non-MyPay FINAL").Select

  'Selects all data in column A and copies to clipboard
   Range("A1", Range("A1").End(xlDown)).Select
   Selection.Copy

'Add a new workbook
  Workbooks.Add
 'Paste selected values from previous sheet
  Selection.PasteSpecial Paste:=xlPasteValues

 'Build SaveAs file name (for CSV file)
  MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV"
 'Save template file as...(for CSV file)
  ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
  Limited\" 
  & MySaveFile), FileFormat:=xlCSV

  'Build SaveAs file name (for Txt file)
  MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".Txt"
 'Save template file as...(for Txt file)
  ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
  Limited\" 
  & MySaveFile), FileFormat:=xlTextWindows

  'Close the new saved file
   ActiveWorkbook.Close

  'Selects appropriate worksheet - MyPayFINAL
   Sheets("MyPay FINAL").Select

  'Selects all data in column A and copies to clipboard
   Range("A1", Range("A1").End(xlDown)).Select
   Selection.Copy

  'Add a new workbook
   Workbooks.Add
   'Paste selected values from previous sheet
   Selection.PasteSpecial Paste:=xlPasteValues

   'Build SaveAs file name (for CSV file)
    MySaveFile = Format(Now(), "DDMMYYYY") & "MyPayFINAL" & ".CSV"
  'Save template file as...(for CSV file)
   ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
   Limited\" 
  & MySaveFile), FileFormat:=xlCSV

   'Build SaveAs file name (for Txt file)
   MySaveFile = Format(Now(), "DDMMYYYY") & "MyPayFINAL" & ".Txt"
   'Save template file as...(for Txt file)
   ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
    Limited\" 
   & MySaveFile), FileFormat:=xlTextWindows

  'Close the new saved file
   ActiveWorkbook.Close
  'Close original source workbook (template)
   Workbooks("bacs conversation calc").Close
  'Close final workbook
   ActiveWorkbook.Close savechanges:=True
  'Deletes the original copy
   Kill "S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\" & fileName & 
  ".txt"

  'Displays message box
  MsgBox "Your file has been processed successfully!", vbExclamation

  'Turn on display alerts
  Application.DisplayAlerts = True
 'Turn on screen updates
  Application.ScreenUpdating = True

  End Sub

1 个答案:

答案 0 :(得分:0)

在@ainwood的帮助下,我意识到答案真的很简单。在我使用filename变量的地方,这意味着无法找到该文件 - 使用fileToOpen完全解决了问题。