みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2017-01-17 20:18:31

QNo.9282480

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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のファイルが出来ます。

投稿日時 - 2017-01-19 07:12:58

ANo.5

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

投稿日時 - 2017-01-18 17:52:20

ANo.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

投稿日時 - 2017-01-18 11:56:22

補足

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

投稿日時 - 2017-01-18 12:06:58

ANo.3

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

投稿日時 - 2017-01-18 10:28:10

補足

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

投稿日時 - 2017-01-18 12:04:04

ANo.2

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

投稿日時 - 2017-01-18 10:06:35

補足

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

投稿日時 - 2017-01-18 12:13:24

お礼

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

投稿日時 - 2017-01-18 12:20:38

ANo.1

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

投稿日時 - 2017-01-17 21:16:24

補足

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

宜しくお願い致します。

投稿日時 - 2017-01-17 22:03:40

あなたにオススメの質問