2015-06-08 104 views
0

我修改了一段打开一个.csv文件的代码,复制一个选定的范围并将其粘贴到Excel工作表中的选定单元格中。从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 
+0

你编写这个你自己还是你用复制的代码融合这一点,宏录像机。我在问,因为如果你自己做了这个,我会要求你定义表格,以便更容易解决你的问题。 – dom176

+0

我混合了宏录制器的复制/粘贴位。 – DigitalSea

回答

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 

希望这有助于。

+0

谢谢你这个工作! – DigitalSea

+0

不客气!如果满意,请接受答案。祝你的项目好运。最好的祝福, –

0

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

workbook.worksheet.range 

我认为,如果你定义的工作表,然后使用

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

我相信,这将在追求你的问题的帮助

相关问题