首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VBA格式复制和粘贴

使用VBA格式复制和粘贴
EN

Stack Overflow用户
提问于 2018-02-28 16:40:35
回答 2查看 856关注 0票数 1

我编写了一些VBA来将一些数据从一个工作簿复制并粘贴到另一个工作簿中:

代码语言:javascript
复制
Dim x As Workbook
Dim y As Workbook

' Open both workbooks
Set y = ActiveWorkbook
Set x = Workbooks.Open("Data.csv")

' Copy data from x
x.Sheets("SourceData").Range("A1", _
    x.Sheets("SourceData").Range("A1").End(xlDown).End(xlToRight)).Copy

' Paste to y
y.Sheets("Destination").Range("C4").PasteSpecial Paste:=xlPasteValues
y.Sheets("Destination").Range("C4").PasteSpecial Paste:=xlPasteFormats

这会将数据粘贴到正确的位置。

VBA的下一步是通过包含日期的第一列过滤数据表。但是,数据粘贴会将所有内容转换为一般数据类型,但更重要的是,似乎失去了字段中字符串后面的“日期值”。例如,当我试图格式化粘贴后的日期列时,没有其他格式类型会更改单元格中显示的内容(即转换为数字仍将显示01/01/2018而不是43101)。这会导致筛选代码隐藏所有行,因为参数中没有日期(因为实际上没有日期)。我甚至不能手动过滤日期(即没有VBA)。

这张图片显示了每种数据类型的预览仍然是20/02/2018。

每当我手动复制和粘贴数据时,它都可以正常工作,并且可以以任何方式格式化日期。只是在使用VBA时才会出现格式化问题。

在我尝试过的其他事情中:

  • 使用VBA在复制/粘贴之前格式化源表中的列
  • 使用VBA在复制/粘贴后格式化目标表中的列
  • 将整个工作表移动到目标工作簿中,并从工作簿中复制/粘贴(移动工作表时丢失格式)
  • 粘贴值&然后在顶部粘贴格式
  • 对数据文件使用不同的文件格式

我想知道这个问题是否是由于Excel中的设置造成的?任何帮助都非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-28 17:04:38

遵循@tigeravatar解决方案,但使用更简洁的代码

代码语言:javascript
复制
Dim y As Workbook

Set y = ActiveWorkbook

With Workbooks.Open("Data.csv").Sheets("SourceData") 'open source workbook and reference its "SourceData" sheet
    With .Range("A1").CurrentRegion 'reference referenced sheet range "adjacent" to cell A1
        y.Sheets("Destination").Range("C4").Resize(.Rows.Count, .Columns.Count).value = .value
    End With
    .Close False
End With
票数 1
EN

Stack Overflow用户

发布于 2018-02-28 16:46:51

不要复制/粘贴,直接设置值:

代码语言:javascript
复制
Dim x As Workbook
Dim y As Workbook
Dim rCSVValues As Range

' Open both workbooks
Set y = ActiveWorkbook
Set x = Workbooks.Open("Data.csv")

' Copy data from x
With x.Sheets("SourceData")
    Set rCSVValues = .Range("A1", .Range("A1").End(xlDown).End(xlToRight))
End With

' Paste to y
y.Sheets("Destination").Range("C4").Resize(rCSVValues.Rows.Count, rCSVValues.Columns.Count).Value = rCSVValues.Value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49034501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档