从csv文件复制并粘贴到excel文件

时间:2015-06-08 21:28:02

标签: excel vba excel-vba csv

我修改了一段打开.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

2 个答案:

答案 0 :(得分: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

希望这可能会有所帮助。

答案 1 :(得分:0)

这是一个基本的答案,但我建议遵循VBA层次结构以选择特定范围。

workbook.worksheet.range

我认为如果您定义了工作表,则使用

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

我相信这有助于追求你的问题