我正在为一个供应商提取 12 个 Excel 文件。我有很多供应商有 10 或 12 个 Excel 文件。每个 Excel 文件都是一个供应商表单。每个 Excel 文件只有一张工作表,即“sheet1”。供应商名称位于每个 Excel 文件的单元格范围 (C9:F9) 中。我想将所有这 12 个 Excel 文件“Sheet1”提取到一个工作簿中。然后我想使用基于单元格范围 (C9:F9) 的名称(即供应商名称)保存这个新的合并 Excel 文件。我正在使用以下代码。此代码帮助我将 Excel 文件合并到一个工作簿中。但我想更改以下代码行...
wbNew.SaveAs Filename:="C:\Users\s\Desktop\C\Consolidation", FileFormat:=xlWorkbookNormal
我希望文件名基于单元格范围(C9:F9),例如 Consolidation_XYZ(XYZ 是供应商名称,在 C9:F9 中)。
代码是:
Sub ImportFiles()
Dim wbOpen As Workbook
Dim wbNew As Workbook
Dim fName As String
'Change Path
Const strPath As String = "C:\Users\s\Desktop\A\"
Dim strExtension As String
MsgBox ("Do you Want to Extract Files?")
'Comment out the 3 lines below to debug
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next
ChDir strPath
'Change extension
strExtension = Dir("*.xls")
Set wbNew = Workbooks.Add
'Change Path, Name and File Format
wbNew.SaveAs Filename:="C:\Users\s\Desktop\C\Consolidation", FileFormat:=xlWorkbookNormal
Do While strExtension <> ""
Set wbOpen = Workbooks.Open(strPath & strExtension)
With wbOpen
.Sheets("Sheet1").Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
ActiveSheet.Name = ActiveSheet.Range("F6")
wbNew.Sheets(wbNew.Sheets.Count).Name = wbNew.Sheets(wbNew.Sheets.Count).Cells(1, 1)
.Close SaveChanges:=False
End With
strExtension = Dir
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
On Error GoTo 0
MsgBox ("Files Extracted Succussfully")
fName = Dir("C:\Users\s\Desktop\A\*.*")
Do While fName <> ""
If fName <> "Master1.xls" And fName <> "Master2.xls" Then 'or .txt or .csv or whatever
Kill "C:\Users\s\Desktop\A\" & fName
End If
fName = Dir
Loop
End Sub
答案 0 :(得分:0)
根据您提供的代码可以创建新的自变量,您可以在其中存储范围“C9:F9”的值,并在打开文件时使用相同的变量来存储名称文件意味着范围“C9:F9”和保存文件时使用相同的方法。
答案 1 :(得分:0)
尝试以下操作:
为文件名声明一个字符串变量:
Dim strVndr as String
将供应商名称分配给变量... 对于 Office365:
strVndr=application.WorksheetFunction.TextJoin("_",False, range("C9:F9"))
否则,请尝试:
strVndr=application.WorksheetFunction.Concat(Range("C9"),"_",Range("D9"),"_",Range("E9"),"_",Range("F9"))
然后修改您的原始 SaveAs 行以组合您的路径和文件名(注意我在原始文件名行中添加了最后一个反斜杠):
wbNew.SaveAs Filename:="C:\Users\s\Desktop\C\Consolidation\" & strVndr, FileFormat:=xlWorkbookNormal