0
在地方提供了一些帮助之后,我写了下面的代码,它完美地工作,但我需要能够覆盖最初的文件名(我们被要求用GetOpenFilename选择的那个)来包含!DNU!所以用户在选择它之后就知道了,而不是再次选择相同的文件,特别是他们将使用的文件都非常相似。你可以看到我试着用'重命名原始文本文件'下面的行,但它什么也没做!任何帮助,将不胜感激。覆盖初始文件名
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" & sheetName & "!DNU!" & ".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
MsgBox "Your file has been processed successfully!", vbExclamation
'Turn on display alerts
Application.DisplayAlerts = True
'Turn on screen updates
Application.ScreenUpdating = True
End Sub
Sub FileNameChange()
Dim oldPath As String
Dim newPath As String
oldPath = "S:\Accounts (New)\Management Information (Analysis)\Phil
Hanmore - Analysis\Neil Test\" & Test & ".xlsx"
newPath = "S:\Accounts (New)\Management Information (Analysis)\Phil
Hanmore - Analysis\Neil Test\" & Test & "!DNU!.xlsx"
End Sub
@马特杯我必须在这里做错事,因为那种方法根本不适用于我。我想知道,因为我已经管理过在名称中创建带有DNU的文件的另一个副本,只是删除了原始文件,并将其中带有DNU的副本删除。这是否合理?将它应用到我的代码中的最佳方式是什么?出于某种原因,我实际上在文件名和表名中得到.txt,你能看到我需要删除的内容吗?我试着把这一行的一部分写出来fileToOpen = Application.GetOpenFilename(“Text Files(* .txt),* .txt”),但它也没有工作! – Dyhouse
@Dyhouse学会使用调试器。使用F9设置/清除断点,F8跳过,Shift + F8跳过,您可以拖动黄线到您打入的范围内的任何可执行指令。使用即时窗格(Ctrl + G )和* locals *工具窗口来检查变量的值以及它们在分配时的变化。 –
@Dyhouse你收到一个错误?或者它只是完全不工作。你可以编辑你的原始文章并显示你正在尝试使用Name的完整代码吗? – Busse