【问题标题】:Worksheet save failing工作表保存失败
【发布时间】:2013-05-13 15:09:01
【问题描述】:

我编写了一个子程序,应该将工作表 2 保存为一个带有时间戳的 csv 文件。我让用户使用 get path sub 选择文件路径,然后当用户单击“确定”时,程序失败并说

run time error 9, subscript out of range.  

你能帮我弄清楚我的程序在哪里/为什么会这样吗?

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

【问题讨论】:

  • 请在“立即/调试”窗口中向我们提供此代码的输出:?ActiveWorkbook.Worksheets("Sheet2").rows.count 如果它给出了错误,那就是问题所在。
  • 我怀疑没有名为“sheet2”或“Sheet2”的工作表。
  • @Philip,你说“这就是问题所在”。这是什么问题?
  • @DougGlancy 我的意思是如果他在即时窗口中收到错误,那么这就是问题的原因,他必须计算出正确的工作表名称
  • 我知道出了什么问题,我可以在第一次打开 excel 文件时运行它,但是一旦我使用它,它将 sheet2 的名称更改为日期等,所以我只需要在我运行完所有内容后,要更改工作表的名称吗?我认为

标签: excel save vba


【解决方案1】:

所以我会告诉你我的解决方案,以防你感兴趣:

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

所以我在更改名称之前激活了工作表二,然后将其保存,然后我将活动工作表的名称更改回 sheet2。

感谢您的意见!

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多