2015-05-19 51 views
0

我是新来的VBA和已经经历一直这么好到现在为止,我是股票的东西有人问我,我不处理,也没有学得不错呢。VBA保存文件使用不同的工作簿

我提供了一些资料,给你我的情况是什么更好的视野,希望了解我在做什么。

我在做什么是以下,我正在使用一个主文件打开两个工作簿,第一个是需要清除并准备填写第二个工作簿的数据,这是一个模板(.csv)将被上传到SAP。

这个想法是让主文件中的所有代码都能通过按下它的按钮来完成所有需要的操作,但是我不能完成保存文件的最后一部分作为我想要使用的具体名称主文件中的路径。这引发了我一个错误:这是我有:

'Pasting Data in CVC Template 

Workbooks("CVC_Weekly AMS.csv").Activate 
Range("E3").Select 
ActiveSheet.Paste 

'Saving Data as: 

If Range("B4") = "C:\" Then 

path = Range("B4") 
Else 
path = Range("B4") + "\" 
End If 

filename = InputBox("Type in the name to save this file - Recommended name CVC_Weekly AMS Current Date ") 
ActiveWorkbook.SaveAs path & filename, FileFormat:=6 '6 .csv format 

看来,代码指示要使用的模板文件的范围,而不是使用主文件的,事情是,如果我添加另一个代码如windows(masterfile)或工作簿(masterfile).activate,它使用我在输入框中输入的名称保存主文件。

有人能帮我一个忙吗?这让我感到沮丧!

+0

参见[这](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)使用对象,这将是确定: ) –

回答

1

不知道你在拷贝什么。

此代码可以指导您正确的方向。

Sub Button1_Click() 
    Dim wb As Workbook 
    Dim bk As Workbook 
    Dim ws As Worksheet 
    Dim sh As Worksheet 
    Dim ShRng As Range 

    Set wb = ThisWorkbook 
    Set bk = Workbooks("CVC_Weekly AMS.csv") 

    Set ws = wb.Sheets("Sheet1") 
    Set sh = bk.Sheets("Sheet1") 

    Set ShRng = sh.Range("E3") 

    ws.Range("A1").Copy ShRng 



    If ws.Range("B4") = "C:\" Then 
     Path = ws.Range("B4") 
    Else 
     Path = ws.Range("B4") + "\" 
    End If 

End Sub 
+0

++正确的做法:) –