将工作表的3列保存为CSV(使用VBA)

我有一个Visual Basic的问题,我想生成一个csv只有3列,这将是BMR,我有一个代码在这里,但它不仅产生3列,但整个工作表,你能帮我吗?

Sub GravaTXT() Dim pasta As Workbook Dim abaPlan As Worksheet Dim b As Range Dim m As Range Dim r As Range Dim name As String name = Range("R13").Value Set b = ActiveCell.EntireColumn("B") Set m = ActiveCell.EntireColumn("M") Set r = ActiveCell.EntireColumn("R") Set abaPlan = ThisWorkbook.Worksheets("Orcamento") Set pasta = Application.Workbooks.Add abaPlan.Copy Before:=pasta.Worksheets(pasta.Worksheets.Count) Application.DisplayAlerts = False pasta.SaveAs Filename:="C:\Users\alcir.scarmin\Desktop\" & name & ".csv", FileFormat:=xlCSV Application.DisplayAlerts = True pasta.Close SaveChanges:=False End Sub 

编辑
我做了一个小的修改(@Pehs的答案)能够正确运行,但我现在离开它的方式只需要行“20”我怎么能Offset? 我尝试了几种方法,但没有奏效。 (我是巴西人,我使用谷歌翻译,巴西人不喜欢自己帮忙)谢谢。

 Sub GravaTXT() Dim abaPlan As Worksheet Set abaPlan = ThisWorkbook.Worksheets("Orcamento") Dim name As String name = abaPlan.Range("R13").Value Dim pasta As Workbook Set pasta = Application.Workbooks.Add abaPlan.Range("B20,M20,R20").Copy pasta.Worksheets(1).Range("A1") pasta.Worksheets(1).name = abaPlan.name Application.DisplayAlerts = False pasta.SaveAs Filename:="C:\Users\alcir.scarmin\Desktop\" & name & ".csv", FileFormat:=xlCSV Application.DisplayAlerts = True pasta.Close SaveChanges:=False End Sub 

这是因为您复制了整个工作表与abaPlan.Copy但您只需要复制一些列abaPlan.Range("B:B,M:M,R:R").Copy

 Option Explicit Sub GravaTXT() Dim abaPlan As Worksheet Set abaPlan = ThisWorkbook.Worksheets("Orcamento") 'source workbook Dim name As String name = abaPlan.Range("R13").Value 'always refer ranges to a specific worksheet Dim pasta As Workbook Set pasta = Application.Workbooks.Add 'copy columns B, M and R to new workbook first worksheet abaPlan.Range("B:B,M:M,R:R").Copy pasta.Worksheets(1).Range("A1") pasta.Worksheets(1).Name = abaPlan.Name 'rename the first worksheet to the same name as abaPlan Application.DisplayAlerts = False pasta.SaveAs Filename:="C:\Users\alcir.scarmin\Desktop\" & name & ".csv", FileFormat:=xlCSV Application.DisplayAlerts = True pasta.Close SaveChanges:=False End Sub 

注意
我build议使用

 Filename:=Environ("userprofile") & "\Desktop\" & name & ".csv" 

而不是一个硬编码的path。

另外请注意,使用R13中的name而不检查它是否只包含对文件名有效的字符可能会导致错误。