• ベストアンサー

マクロを実行すると、エラーにならずに、じりじり音がしてしまう

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 まず、どこまでコードが通っているか、調べてみてください。ブレイク・ポイントを置けば分かるはずです。 全体が書かれていないのではっきりしない部分がありますが、FileSearch オブジェクトは、NewSearch コマンドは入っていますか? 私としては、以下のどこに問題があるか、それだははっきりしたいと思います。 For i = 1 To .FoundFiles.Count Workbooks.OpenText Filename:=.FoundFiles(i), _ ちゃんと、.FoundFiles.Count の数は取れていますか? ここの .FoundFiles(i) ファイル名はちゃんと取れているか、調べてみてください。 記録マクロからのようですが、 TextQualifier:=xlDoubleQuote, _ の行を削除してみるか、 または、正しい書き方に戻してみるとか。 TextQualifier:= xlTextQualifierDoubleQuote ただ、もしも、トラブルがコードの中にないようでしたら、最終的には、このコード自体を、あきらめたほうがよいです。もともと、TextOpenメソッドは、CSVの特殊なものに使う書き方ですから、コードを見ている限り、特殊な部分はないように思います。 それから、そのコード自体は、外部ツールを使っているので、そのツール自体の依存性(Dependency)が壊れていると、そのままの状態では、容易には修復は難しいかもしれません。いろんなソフトを入れていますと、しょうがないのです。別に特別にOSとかOffice が壊れたようなことではなくて、VBAを専門に扱う人は、私を含めて、みんな、一度は経験する話のようです。だから、この手の質問の回答では、手抜き(=初級のコード)をしなければ、別のコードを書くのですね。

oshietecho-dai
質問者

補足

こんにちは、お世話になります。 実行できてた当事の実行結果は、自身の判断では、全く問題ないと思います。 その後の経緯 1、 デスクトップ上の他のソフト、IE、を全て終了してから実行したが、変わらず。    その後、少し時間を置いてから実行しましたら、実行できました。 2、 翌日、ソフト2つが起動してる状態で、実行しましたら、エラーになる。    「エラー番号1004、*.csvがありません。ファイル名及びファイルの保存場所が正しいかどうか確認してください。」 デバッグで、当初質問と同じ 「 線で挟まれた6行だけ 」 が反転されました。 3、 閉じて、再度、実行しましたが、2、と同じでした。 4、 そこで、2、と同じ環境で、試しに、当コードの*.CSV → *.csv にして、実行しましたら、実行できました。 下記が全コードです。 1、 「*.csv」 を一端、開かないと、データを書き込むことはできないものなんですか? ご確認の上、おかしな箇所がありましたら、ご教示願います。 ---- Private Sub TEST() Dim myFS As FileSearch Dim mySvWb As Workbook Dim i As Long ChDir "C:\DATA" Set myFS = Application.FileSearch With myFS .LookIn = "C:\\Documents and Settings\Owner\デスクトップ\ファイルフォルダ" .SearchSubFolders = True 'サブフォルダも参照する .Filename = "*.CSV"    '→*.csvにしましたら実行できました If .Execute > 0 Then For i = 1 To .FoundFiles.Count '----------------------------------------------- '見つかったファイルを一つずつ開く Workbooks.OpenText Filename:=.FoundFiles(i), _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Comma:=True '----------------------------------------------- 'ああ.xlsブックに移動 Sheets(1).Move after:=Workbooks("ああ.xls").Worksheets(Workbooks("ああ.xls").Sheets.Count) Next i '初期設定のシートを削除 Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select Application.DisplayAlerts = False ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True Else '検索結果が0なら MsgBox "検索条件を満たすファイルはありません。" End If End With End Sub

関連するQ&A

  • ワイルドカードの記述が、原因でしょうか?

    下記コードが、ついこの前までは、きちんと "A?07??????.CSV" を読み込んでたんですが、 今は、 "検索条件を満たすファイルはありません。"  となってしまいます。 1、ワイルドカードの記述が、おかしいでしょうか? 2、フォルダ名は、漢字等はやめて、半角英数字にしたほうがよいのでしょうか? 3、このような、現象は、よくあることでしょうか? 以上 原因がわかりませんので、何卒ご教示くださいませ。 ----------------- Private Sub TEST() Dim myFS As FileSearch Dim i As Long ChDir "C:\Documents and Settings\Owner\デスクトップ\ああ" Set myFS = Application.FileSearch With myFS .LookIn = "C:\Documents and Settings\Owner\デスクトップ\ああ" .Filename = "A?07??????.CSV" If .Execute > 0 Then For i = 1 To .FoundFiles.Count '見つかったファイルを一つずつ開く Workbooks.OpenText Filename:=.FoundFiles(i), _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Comma:=True 'ああ.xlsブックに移動 Sheets(1).Move after:=Workbooks("ああ.xls").Worksheets(Workbooks("ああ.xls").Sheets.Count) Next i Else MsgBox "検索条件を満たすファイルはありません。" End If End With End Sub

  • オブジェクト変数の取得について

    以下のようにOpenTextでファイルを開いてそれをオブジェクト変数に取得したいのですが 「Functionまたは変数が必要です」というエラーになります。 どなたかご教示ねがえませんでしょうか? よろしくお願いいたします。 Set WorkBookObject =Workbooks.OpenText FileName:=strPath & strTxt, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _ Comma:=True, Space:=False, Other:=False, FieldInfo:=aryCell

  • エクセル VBA

    エクセルで指定したフォルダから シート1のA1セルに記入された名前のテキストファイルを 開くマクロを作りました 変数filepassがセルA1に記入されたファイルのパスのとして Workbooks.OpenText filename:=filepass, StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(1, 1) しかし このままだと指定したフォルダ(filepass)にファイルがなかったとき エラーになります もしファイルがなかったときに 何かメッセージを表示させたいのですが どのようにすればよいのでしょうか どなたか 教えてください VBAは素人です よろしくお願いします

  • エクセル2000マクロエラーについて

    下記のマクロをエクセル95で動かすと正常に終わるのですが、エクセル2000で 動かすとデバッグエラーで止まります。 何処がおかしいのでしょうか教えてください。 出来れば言語の意味も教えてください。 Sub 送信メニュ() Dim i, C_COUNT, folda, work, tuki i = MsgBox("加工業者別の発注基礎資料を作成します。", 1, "着色加工計画作成システム") If i <> 1 Then Exit Sub Sheets("msg2").Select Call gafalse folda = "C:\aa着色加工計画\" tuki = Sheets("ACT").Cells(5, 12).Text→最初にここでデバッグエラーになります。 tuki = Val(Right(tuki, 2)) If tuki = 12 Then tuki = 1 Else tuki = tuki + 1 End If tuki = Format(Str(tuki), "00") Workbooks.Add F_NAME = "加計" + tuki + "月.XLS" ActiveWorkbook.SaveAs Filename:=folda + F_NAME, _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("加工品.xls").Activate Sheets("masta").Select C_COUNT = Sheets("masta").Cells(2, 3).Text For count = 1 To C_COUNT 'C_COUNT Windows("加工品.xls").Activate Sheets("masta").Select Cells(3, 5) = count i = count M_KAKOBA(count) = "sheet" + i Call 送信 Next count Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=folda + F_NAME, _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False ActiveWindow.Close End Sub

  • コンボボックスからファイルを指定して、マクロを実行するには?

    EXEL VBAで、コンボボックスから2週分のファイルを選び、そのファイルの差を算出するマクロを組みたいのですが、どうしてもコンボボックスで選んだファイルを変数に変えてマクロを実行することが出来ません。どうしたらよいのでしょうか? (現在作成中のマクロを下記に貼り付けました) Private Sub UserForm_Initialize() With Application.FileSearch '検索先フォルダを指定する .LookIn = "F:\Sample2008\数字ファイル(test)" '検索するファイル名を指定する .Filename = "*.xls" '検索を実行する If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Workbooks("変更分.xls").Worksheets("変更数字確認シート").Cells(i, 151).Value = .FoundFiles(i) Next i Else MsgBox "ファイルが見つかりません" End If End With With UserForm1 'リストの項目にセルを指定する .ListBox5.RowSource = Workbooks("変更分.xls").Worksheets("変更数字確認シート").Range("EU1:EU30").Address 'リストの項目にセルを指定する .ListBox6.RowSource = Workbooks("変更分.xls").Worksheets("変更数字確認シート").Range("EU1:EU30").Address End With End Sub Sub ListBox5_Click() ListBox5.ListIndex = 先週分 End Sub Sub ListBox6_Click() ListBox6.ListIndex = 今週分 End Sub '別マクロにて「先週分」と「今週分」の変数を使って引き算を実行

  • エクセル2000マクロインデックスエラー

    下記のマクロでインデックスが有効範囲にありません。 Windows(F_NAME).Activate→エラー個所 Sheets(M_KAKOBA(count)).Select→エラー個所 教えてください。 Dim work, hensu, i, j, h Windows("加工品.xls").Activate work = Sheets("masta").Cells(3, 6).Text 'シート名の変更 Windows(F_NAME).Activate Sheets(M_KAKOBA(count)).Select ActiveSheet.Name = work

  • VBマクロについて

    VBマクロについて 0864_001.xls 0864_002.xls … 0864_009.xls というxlsファイルがあります。 0864_001.xlsを開く→処理→閉じる→0864_002.xls→… のようなループを考え、matome.xls内で以下のようなマクロを作成したのですが実行されません。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00" & CStr(i) & ".xls" Workbooks("\0864_00" & CStr(i) & ".xls").Activate Range("F1").Formula = "=max($B$11:$B$17)" Range("G1").Formula = "=max($B$391:$B$398)" Range("F1:G1").Copy Workbooks("matome.xls").Activate Sheet1.Activate Range("A" & CStr(i + 1)).PasteSpecial Paste:=xlPasteValues Workbooks("\0864_00" & CStr(i) & ".xls").Close SaveChanges:=False Next i End Sub 5行目でエラーが発生し、「インデックスが有効範囲にありません」とのメッセージが表示されます。 どのようにすれば実行されるのか教えていただきたいです。

  • エクセルマクロ ファイル名を変更したとき

    マクロ初心者です。 データファイルからシートを複写挿入するマクロです。 コピー先ファイル名を都度変更したいのですが、その場合マクロにコピー先ファイル名が入っているのでエラーになります。名前が変わっても実行できるようにするにはどうしたらよいのでしょう? なお、複写元のデータファイルは複写後に閉じます。 Workbooks.Open Filename:="データファイル.xls" Sheets("Sheet1").Copy Before:=Workbooks("コピー先ファイル名.xls").Sheets(1)

  • エクセル2000のマクロについて再び

    新しいブックを作りさらに他のブックで作成されているシートをコピーして移動するというマクロを作ります。この時、新しく作ったブックの名前がBook1にならないとその時点でマクロのエラーになりなってしまいますが、たまにBook2になってしまうときがあります。必ずBook1になると指定することはできないのでしょうか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select Sheets(Array("sheet1", "sheet2", "sheet3")).Copy →新しいシートを作成 Workbooks.Open Filename:="C:xxx\○○\△△.xls" Sheets.Copy after:=Workbooks("book1").Sheets(2) →ここで、Book1が存在しないとエラーになってしまう。 お願いします。

  • EXCELマクロ実行後、読み込み専用になってしまう

    EXCELマクロ実行後に読み取り専用になってしまう。 <内容>  1つのファイル(A)に他の複数のファイル(B,C・・・)内のシートを取り込んだ後、更新せずに終了させています。 <困ったこと>  そのマクロを実行したあと上記のファイルB,C・・・が読み取り専用になってしまいます。PCを再起動すると解除されます。  読み取り専用にならないようにする方法はありますでしょうか。  ご指導のほど、よろしくお願いいたします。 <参考> For Each fName In FSO.GetFolder(MyFolder).Files If FSO.GetExtensionName(fName) = "xls" And _  FSO.GetBaseName(fName) <> "ファイルA" Then  Set wBook = Workbooks.Open(fName)   For 番号 = 1 To Worksheets.Count  wBook.Worksheets(番号).Copy _  after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)   Next 番号    wBook.Close True   End If Next