作为预警,我是VBA的新手。
我将以下代码拼凑在一起以执行以下操作: 1.找到工作表“ Intrastat” 2.复制此工作表的使用范围 3.将值粘贴到新工作簿中 4.重新格式化B列中的日期 5.将工作簿保存在原始工作簿的位置。
但是,只有当我将宏保存在原始工作簿中时,此方法才起作用。我需要的是能够将宏保存在其他工作簿中,并且在运行宏时,我需要能够从HDD上的文件位置选择“原始”工作簿。
有什么想法吗?
当前代码:
Sub TB_Intrastat_Data_Cleanse()
Dim wb As Workbook
Set wb = Workbooks.Add
Set TWKB = ThisWorkbook
Set sel = Selection
Dim folderPath As String
folderPath = Application.ThisWorkbook.Path
TWKB.Sheets("Intrastat").UsedRange.Copy
wb.Sheets(1).[a1].PasteSpecial xlPasteValues
Columns("B:B").Select
Selection.NumberFormat = "dd/mm/yyyy;@"
nme = "TB Intrastat Data " & Range("A3") & " MTD"
ActiveWorkbook.SaveAs Filename:=folderPath & nme
End Sub
答案 0 :(得分:0)
您可以使用Application.GetOpenFilename()
来提示用户浏览文件浏览器并打开文件。然后它将使用该文件作为TWKB
:
Sub TB_Intrastat_Data_Cleanse()
Dim wb As Workbook, TWKB As Workbook
Dim sel As Range
Dim nme As String
Set wb = Workbooks.Add
Set TWKB = Application.GetOpenFilename(Title:="Please choose a file to open", FileFilter:="Excel Files *.xls* (*.xls*),")
Set sel = Selection
Dim folderPath As String
folderPath = Application.ThisWorkbook.Path
TWKB.Sheets("Intrastat").UsedRange.Copy
wb.Sheets(1).[a1].PasteSpecial xlPasteValues
Columns("B:B").NumberFormat = "dd/mm/yyyy;@"
nme = "TB Intrastat Data " & Range("A3") & " MTD"
ActiveWorkbook.SaveAs Filename:=folderPath & nme
End Sub
注意:我将在最后将ActiveWorkbook.SaveAs
更改为一个工作簿变量(或明确命名该工作簿),因为您要使用两个单独的变量,所以要确保它保存了正确的变量。