2016-06-09 38 views
0

我想按一下按鈕,當按下時提示用戶打開一個CSV文件,然後一堆其他東西都會自動在CSV文件上執行。下面是代碼,我目前的工作:用戶使用VBA打開CSV到標籤

Sub MainMacro() 

Dim fNameAndPath As Variant 
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.csv), *.csv", Title:="Select File To Be Opened") 
If fNameAndPath = False Then Exit Sub 
Workbooks.Open Filename:=fNameAndPath 

'Sheets.Add After:=Sheets(Sheets.Count) 

'ActiveSheet.name = fNameAndPath 

Call Macro1 
Call Macro2 
Call Macro3 
Call Macro4 
End Sub 

將這個打開了CSV文件,我希望它在選項卡中打開等等Marco1 Marco2...可以執行各自的任務。因此,該按鈕會執行用戶隨後加載的新活動工作表上的MainMacro()的所有內容。

+0

所以你需要添加一個按鈕到你的工作簿,並從'_Click'事件調用'MainMacro'?我沒有看到你在努力掙扎,增加一個按鈕?引用MainMacro代碼?你能澄清一下你有什麼麻煩嗎? – Dave

+0

@Dave我有一個按鈕,我把它分配給宏「MainMacro」。該文件在另一個窗口中打開,但是我希望它打開爲具有按鈕的工作表旁邊的工作表。 –

+0

非常好。發生什麼了? – Dave

回答

2

此代碼將打開csv,然後將工作表複製到原始工作簿中供您隨意使用。在將工作表複印到目標工作簿時,複印的工作表也會激活。

Sub MainMacro() 
    Dim csvWB As Workbook 
    Dim fNameAndPath As Variant 
    fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.csv), *.csv", Title:="Select File To Be Opened") 
    If fNameAndPath = False Then Exit Sub 
    Set csvWB = Workbooks.Open(Filename:=fNameAndPath) 
    csvWB.Worksheets(1).Copy Before:=ThisWorkbook.Worksheets(1) 
    csvWB.Close 
    Call Macro1 
    Call Macro2 
    Call Macro3 
    Call Macro4 
End Sub 

當然,這取決於Macro1-4實際上做,可能更容易在不同的工作簿中打開它,只是執行您的宏對抗?