在单独的工作簿中具有宏以查找工作簿,将其作为值从工作表中复制并粘贴到新工作簿中,并保存在原始工作簿的位置

时间:2018-07-31 17:54:51

标签: excel vba excel-vba

作为预警,我是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

1 个答案:

答案 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更改为一个工作簿变量(或明确命名该工作簿),因为您要使用两个单独的变量,所以要确保它保存了正确的变量。