我正试图从启用宏的工作簿复制到.csv文件,但由于某种原因,粘贴部分仅在列a中粘贴一切。VBA编码如下。请帮我弄清楚为什么它不会粘贴到相同的单元格,因为它复制。当我一步一步地运行宏时,它工作完美,但是当它自己运行时,它将所有数据粘贴在a列中。
Sheets("Input").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Workbooks.Open Filename:="C:tempMyFile.csv"
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
导出工作表为CSV
一个替代
- 如果你想选择的是工作表中唯一的数据,你可以只是
copy the worksheet
,它创建一个新的工作簿,只包含这个工作表,最后保存为CSV文件。
Option Explicit
Sub ExportWorksheetToCSVtest()
Const FilePath As String = "C:tempMyFile.csv"
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Input")
ExportWorksheetToCSV ws, FilePath
End Sub
Sub ExportWorksheetToCSV( _
ByVal ws As Worksheet, _
ByVal FilePath As String)
If ws Is Nothing Then Exit Sub
ws.Copy
With ActiveWorkbook
Application.DisplayAlerts = False
.SaveAs FilePath, xlCSV
Application.DisplayAlerts = True
.Close SaveChanges:=False
End With
End Sub
更新了改进的答案。
不知道你的床单哪里出了问题,但这可以工作。不要使用Select
Dim CopyRange As Range, copySheet As Worksheet
Set copySheet = ActiveSheet
Set CopyRange = Intersect(Range("A:C"), copySheet.UsedRange)
Dim theValues()
theValues = CopyRange.Value
Workbooks.Open Filename:="C:tempMyFile.csv"
Dim theCSV As Workbook
Set theCSV = ActiveWorkbook
theCSV.Sheets(1).Range("A1").Resize(UBound(theValues), UBound(theValues, 2)) = theValues
@PGSystemTester:这段代码做了同样的事情。所有内容只粘贴在A列。
@VBasic2008:这工作,但也给出了意想不到的错误。
我所做的工作基本上是运行相同的宏两次。我不确定为什么会这样。但是当宏第一次运行时,它会粘贴列a中的所有内容。当它再次运行时,它会正确地粘贴。所以我刚刚加倍了宏的编码,现在它工作良好。
谢谢你的帮助!