Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12034 / 13645 ツリー ←次へ | 前へ→

【12708】ファイルが開けません VBA素人 04/4/13(火) 10:42 質問
【12749】Re:ファイルが開けません Asaki 04/4/14(水) 0:00 回答

【12708】ファイルが開けません
質問  VBA素人  - 04/4/13(火) 10:42 -

引用なし
パスワード
   batファイルで複数ファイルを1つにした後、そのファイルを開こうと
すると、ファイルが見つかりませんとエラーが出ます。デバッグで
VBエディタ(?)を開いて、そのまま「実行」ボタンを押すと
エラーなく終了します。
ファイルが出来るのに、タイムラグがあるのかと思い、
ファイル作成できたのを確認するVBAを間に入れたのですが、
(他の人に作ってもらった)
同じエラーが出ます。どこが間違っているのかが分かりません。
ご教授いただけないでしょうか。。。困っています。
'======================================================================
Sub main()
  
> 略

  ひとつのcsvを作成
  csv完成待ち
  パラメータファイル分割

  
End Sub

'--------------------------------------------------------------------------

Private Sub ひとつのcsvを作成()

Dim bbb
bbb = Shell(パス & "gattai.bat")
'
End Sub

'--------------------------------------------------------------------------

Private Sub csv完成待ち()

Dim L_i    As Integer  'ループカウンタ
Dim newHour  As Integer
Dim newMinute As Integer
Dim newSecond As Integer
Dim waittime  As Integer
Dim a     As String

L_i = 1
For L_i = 1 To 6 '最大1分まで待たせます♪
  newHour = Hour(Now())
  newMinute = Minute(Now())
  newSecond = Second(Now()) + 5
  waittime = TimeSerial(newHour, newMinute, newSecond)
  Application.Wait waittime
  a = Dir(パス & "printer.csv")  '例)a = Dir("c:\ftp\test01.txt")
  If a = "printer.csv" Then '例)a = "test01.txt"
    Exit For
  End If
Next

End Sub

'--------------------------------------------------------------------------

Private Sub パラメータファイル分割()

Dim InputFileName  As String 'inputとなるcsvファイル
Dim OutputFileName1 As String '追加のとき用
Dim OutputFileName2 As String '削除のとき用
Dim InputLine    As String '入力ライン
Dim L_i       As Long  'ループカウンタ

L_i = 1
'プリンタファイル分割****

InputFileName = (パス & "printer.csv")
OutputFileName1 = (パス & "addprinter.csv")
OutputFileName2 = (パス & "delprinter.csv")


'***ここでエラーが出ます!****
Open InputFileName For Input As #1          
"*******************

Open OutputFileName1 For Output As #2
Open OutputFileName2 For Output As #3

For L_i = 1 To 99999
  Line Input #1, InputLine
  If EOF(1) = True Then: Exit For 'EOFでループ終了♪
  
  Select Case Left(InputLine, 2)
    Case "追加"
     Print #2, Mid(InputLine, 4, 999)
    Case "削除"
     Print #3, Mid(InputLine, 4, 999)
  End Select

Next

Close #1, #2, #3


>>略

End Sub

'==========================================================================

始めのbatファイルの中身は

C:
CD C:\sinsei\work
type printer\*.csv > printer.csv

となっています。
変数などは間違ってないと思います。
よろしくお願いします。

【12749】Re:ファイルが開けません
回答  Asaki  - 04/4/14(水) 0:00 -

引用なし
パスワード
   こんばんは。

とりあえず、パスは間違ってないですよね?
>InputFileName = (パス & "printer.csv")
の後ろに
Msgbox InputFileName
でもいれて、再度確認されてはどうでしょうか?

また、csv完成待ち() の関数ですが、ファイルが出来てなくても、
ループが回りきってしまえば、次の処理に進みますよね?
それは大丈夫なんでしょうか?

>Open InputFileName For Input As #1
↑の行にブレークポイントを設定して、実際に、エクスプローラか何かで、
この時点で、ファイルが存在しているかどうかチェックされては如何ですか?

12034 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free