1

ワークシート 2 をタイムスタンプ付きの csv ファイルとして保存するサブを作成しました。ユーザーに get path sub を使用してファイルパスを選択させ、ユーザーが「OK」をクリックすると、プログラムが失敗して次のように表示されます

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
4

1 に答える 1

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 をアクティブにして保存し、アクティブなワークシートの名前をシート 2 に戻しました。

ご入力いただきありがとうございます。

于 2013-05-13T16:01:43.853 に答える