• 締切済み

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

みんなの回答

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.6

おはようございます 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.5

こんにちは No.4で提示したコードでもエラーに なりますか? 以前と同じエラーですか? その時点のCheckCountは? 7_STORE_ASN_TRN.csvが無いというエラー とは違いますか?

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.4

こんにちは 多分、"*_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

koji0513yuihhh
質問者

補足

こんにちは 仰るとおりでございます。 「6_STORE_ASN_TRN.csv」までは作成できたのですが、 その次の「7_STORE_ASN_TRN.csv」を出力しようとするとエラーになります。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは 6ファイル成功したのも不思議なコード ですよね。 ループの中でFileNameを変更している のも変ですし、その時点で何もせず、 ループを抜けてからファイルへ出力して いますね。 全部で何ファイルあるのですか?

koji0513yuihhh
質問者

補足

こんにちは コードは他サイトから引用しました。 全部で300ファイルほど作成したいと思っております。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは エラーで止まった時にコードの何処かが 黄色になってますか? なっていれば、その時CheckCountの上に マウスカーソルを合わせれば値が表示され ませんか?

koji0513yuihhh
質問者

お礼

すみません。 もう一度、試してみたら黄色くなりました。 CheckCountにカーソルを合わせると=32767と出ます。

koji0513yuihhh
質問者

補足

こんにちは 実行すると「#6:オーバーフロウしました。」と出てきますが、黄色にはなりません。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんばんは エラーになったときのCheckCount は幾つになっていますか?

koji0513yuihhh
質問者

補足

すみません。 本当に初心者なのでCheckCount が幾つか分かりません。 お手数ですが、確認方法をご教示頂けますでしょうか。 宜しくお願い致します。

関連するQ&A