【问题标题】:copy and paste from csv file to excel file从csv文件复制并粘贴到excel文件
【发布时间】:2015-06-08 21:28:02
【问题描述】:

我修改了一段代码,该代码打开了一个 .csv 文件,复制了选定的范围并将其粘贴到 Excel 工作表的选定单元格中。

我无法选择 .csv 文件中的下一个范围以粘贴到 excel 文件中。它仅适用于第一个范围 (E2:E25)。

我希望它从 .csv 文件中选择下一个范围 (B2:B25),复制/粘贴,但它只从 excel 文件中选择。我该如何解决?谢谢。

Option Explicit                               

Sub copy2()
Dim FilesToOpen
Dim wkbAll As Workbook
Dim wkbTemp As Workbook
Dim newSheet As Worksheet
FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open")
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Format:=4)
    wkbTemp.Sheets(1).Cells.copy
    Range("E2:E25").Select
    Selection.copy
    Windows("Petty Cash Form (test).xls").Activate
    Range("H10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False


    Range("B2:B25").Select
    Selection.copy
    Windows("Petty Cash Form (test).xls").Activate
    Range("B10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    Application.CutCopyMode = False
    wkbTemp.Close

End Sub

【问题讨论】:

  • 您是自己编写代码还是将其与复制的代码和宏记录器混合。我问是因为如果你自己做这个,我会要求你定义表格,以便更容易解决你的问题。
  • 我混合了宏记录器中的复制/粘贴位。

标签: vba excel csv


【解决方案1】:

在您的 VBA 宏中添加以下行:wkbTemp.Sheets(1).Activate(请参阅“激活源工作表”):

Option Explicit

Sub copy2()
Dim FilesToOpen
Dim wkbAll As Workbook
Dim wkbTemp As Workbook
Dim newSheet As Worksheet
FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open")
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Format:=4)
    wkbTemp.Sheets(1).Cells.copy
    Range("E2:E25").Select
    Selection.copy
    Windows("Petty Cash Form (test).xls").Activate
    Range("H10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

  'Activate Source Worksheet
  wkbTemp.Sheets(1).Activate    

    Range("B2:B25").Select
    Selection.copy
    Windows("Petty Cash Form (test).xls").Activate
    Range("B10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    Application.CutCopyMode = False
    wkbTemp.Close

End Sub

希望这会有所帮助。

【讨论】:

  • 不客气!满意请采纳答案。祝你的项目好运。最好的问候,
【解决方案2】:

这有点粗略,但我建议遵循 VBA 层次结构以选择特定范围。

workbook.worksheet.range

我想如果你定义了工作表然后使用

wrktemp.Sheets("sheet name").Range("E2:E25")

我相信这将有助于解决您的问题

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多