首页 文章

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

提问于
浏览
0

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

    在您的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

    这有点基本的答案,但我建议遵循VBA层次结构以选择特定范围 .

    workbook.worksheet.range
    

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

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

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

相关问题