- 締切済み
AccessのVBAに関しての質問です。
クエリで抽出したファイルをCSVで出力させ、出力したファイル名を「連番&ファイル名」の形にしたく 下記のコードを使用しました。 6ファイルは出力は成功したのですが、7ファイル目を出力しようとしたところ、「#6:オーバーフロウしました。」とエラーがでてきてしまいます。 原因やここのコードを変えれば直るというのが、お分かりになる方がいればご教示頂けますでしょうか。 初心者ですのでコードも書いて頂けると非常に助かります。 Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:¥Users¥エクスポート¥" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 Do Until Dir(FolderPass & FileName) = "" CheckCount = CheckCount + 1 FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" Loop varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- ushi2015
- ベストアンサー率51% (241/468)
おはようございます Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String Dim tmp As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:\Users\エクスポート\" FileName = "_STORE_ASN_TRN.csv" CheckCount = 0 tmp = Dir(FolderPass & CheckCount & FileName) Do Until tmp = "" CheckCount = CheckCount + 1 tmp = Dir(FolderPass & CheckCount & FileName) Loop FileName = CheckCount & FileName varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, True MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub 欠番があれば欠番ファイルが、なければ最大番号+1のファイルが出来ます。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは No.4で提示したコードでもエラーに なりますか? 以前と同じエラーですか? その時点のCheckCountは? 7_STORE_ASN_TRN.csvが無いというエラー とは違いますか?
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 多分、"*_STORE_ASN_TRN.csvというファイル数を数えて最大番号のファイル に出力するんですよね? Private Sub コマンド4_Click() On Error GoTo ErrorTrap Dim varAccess As Variant Dim varCPass As Variant Dim strmsg As String Dim tmp As String varAccess = "ASN抽出" Dim FolderPass As String Dim FileName As String Dim CheckCount As Integer FolderPass = "C:\Users\エクスポート\" FileName = "*_STORE_ASN_TRN.csv" CheckCount = 0 tmp = Dir(FolderPass & FileName) Do Until tmp = "" CheckCount = CheckCount + 1 tmp = Dir() Loop FileName = Format(CheckCount, Len(CStr(CheckCount)) + 1) & "_STORE_ASN_TRN" & ".csv" varTextPass = FolderPass & FileName strmsg = "csvファイルへ出力します。" & Chr(13) & _ "出力先は" & varTextPass & "です。" & _ "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferText acExportDelim, , varAccess, varTextPass, False MsgBox "データ出力は、正常に完了しました。" End If Exit Sub ErrorTrap: If Err.Number = 3044 Then ' MsgBox "パス指定が誤っています。", vbCritical Else MsgBox "予期せぬエラーが発生しました。(#" & Err.Number & " : " & Err.Description & ")", vbCritical End If End Sub
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 6ファイル成功したのも不思議なコード ですよね。 ループの中でFileNameを変更している のも変ですし、その時点で何もせず、 ループを抜けてからファイルへ出力して いますね。 全部で何ファイルあるのですか?
補足
こんにちは コードは他サイトから引用しました。 全部で300ファイルほど作成したいと思っております。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは エラーで止まった時にコードの何処かが 黄色になってますか? なっていれば、その時CheckCountの上に マウスカーソルを合わせれば値が表示され ませんか?
お礼
すみません。 もう一度、試してみたら黄色くなりました。 CheckCountにカーソルを合わせると=32767と出ます。
補足
こんにちは 実行すると「#6:オーバーフロウしました。」と出てきますが、黄色にはなりません。
- ushi2015
- ベストアンサー率51% (241/468)
こんばんは エラーになったときのCheckCount は幾つになっていますか?
補足
すみません。 本当に初心者なのでCheckCount が幾つか分かりません。 お手数ですが、確認方法をご教示頂けますでしょうか。 宜しくお願い致します。
補足
こんにちは 仰るとおりでございます。 「6_STORE_ASN_TRN.csv」までは作成できたのですが、 その次の「7_STORE_ASN_TRN.csv」を出力しようとするとエラーになります。