2013-05-13 93 views
1

我寫了一個應該將工作表2保存爲帶有時間戳的csv文件的子文件。我讓用戶選擇使用get路徑子文件路徑,那麼當用戶點擊「好」的程序失敗,並說工作表保存失敗

run time error 9, subscript out of range. 

能否請你幫我找出哪裏/爲什麼我的程序diong呢?

Public Sub save() 

Dim x As Integer 
Dim FName As String 

x = MsgBox("Are you sure?!?", vbYesNo, "Send File") 
If x <> vbYes Then 
GoTo Send_file_end: 
End If 

FName = get_path & "cambs_uplaoded_trades" & Format(Time, "hh mm ss") & ".csv" 
ActiveWorkbook.Worksheets("sheet2").SaveAs Filename:=FName, FileFormat:=xlCSV 
MsgBox "saved " 

Send_file_end: 
End Sub 

這裏是我的獲取路徑功能

Function get_path() As String 
Dim dlg As Variant 

Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 
dlg.AllowMultiSelect = False 

If dlg.Show <> -1 Then 
get_path = "" 
Else 
get_path = dlg.SelectedItems(1) & "\" 
End If 

End Function 
+0

請給我們在立即/調試窗口中的代碼輸出:??ActiveWorkbook.Worksheets(「Sheet2」)。rows.count'如果它給出了一個錯誤是問題。 – 2013-05-13 15:21:19

+2

我懷疑沒有名爲「sheet2」或「Sheet2」的工作表。 – 2013-05-13 15:23:25

+0

@菲利普,你說「那是問題」。那是什麼問題? – 2013-05-13 15:24:11

回答

0

所以我會告訴你我的解決方案,以防萬一你的興趣:

Sheets("Sheet2").Activate 
FName = get_path & "cambs_uplaoded_trades" & Format(Time, "hh mm ss") & ".csv" 
ActiveWorkbook.Worksheets("Sheet2").SaveAs Filename:=FName, FileFormat:=xlCSV 
MsgBox "saved " 
ActiveSheet.Name = "Sheet2" 
Sheets("Sheet1").Activate 

所以我活化的層狀兩個名字是前更改,然後保存它,然後我將活動工作站的名稱改回到工作表2。

感謝您的輸入!