エクセルマクロエラーの原因と解決方法

このQ&Aのポイント
  • エクセル2000マクロエラーの原因と解決方法についてまとめました。
  • マクロを記述する際にファイルが存在しないエラーが発生する場合、原因としてはファイルのパスやファイル名が間違っている可能性があります。
  • 解決方法としては、ファイルのパスやファイル名を正確に入力するか、ファイルが存在するか確認することが重要です。
回答を見る
  • ベストアンサー

エクセル2000マクロエラー

下記のマクロを記述を記載していますが Open path + finame For Input As #1→でファイルがありませんという エラーがでます。c:\aa着色加工計画\testにファイル(T_Sort.csv)はあるみたいなのですが 教えてください。何が原因でしょうか Sub Do_shukei() Dim 処方(1) As String, 品名(1) As String Dim 倉庫(1) As String Dim tuki(15) As String, sort(1) As String, st As Integer Dim sihan(8) As Long, zaiko As Long, suryo(15) As Long Dim ryo(6) As Long, a As Integer, i As Integer Dim path As String, finame As String, foname As String st = 1 a = 1 For i = 1 To 15 suryo(i) = 0 Next i path = "c:\aa着色加工計画\test" finame = "T_Sort.csv" foname = "T_shukei.csv" Open path + foname For Output As #2 Open path + finame For Input As #1 Do Until EOF(1) = True If a = 1 Then Input #1, sort(0), 倉庫(0), 処方(0), 品名(0), tuki(1), tuki(2), tuki(3), tuki(4), tuki(5), tuki(6), tuki(7), tuki(8), tuki(9), tuki(10), tuki(11), tuki(12), tuki(13), tuki(14), tuki(15) Write #2, sort(0), 倉庫(0), 処方(0), 品名(0), tuki(1), tuki(2), tuki(3), tuki(4), tuki(5), tuki(6), tuki(7), tuki(8), tuki(9), tuki(10), tuki(11), tuki(12), tuki(13), tuki(14), tuki(15) a = 0 GoTo l 下記省略

noname#72697
noname#72697

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

path = "c:\aa着色加工計画\test" はフォルダですよね。 Open path & "\" & foname For Output As #2 Open path & "\" & finame For Input As #1 foname も変な指定になっているはずです。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 原因はNo.1の方の通りなので、ちょっと付け足しですが。 フォルダ名は、今回のように直接パスを書く場合以外にも、関数などで取得する場合もあります。 その場合、取得するフォルダ名はドライブ名(c:\)のように末尾に"\"が付く場合と、付かない場合があります。そこで下記のような処理を常にすると、今回のようなエラーは出なくなります。 If Right(path, 1) <> "\" Then   path = path & "\" End If では。

関連するQ&A

  • マクロエラーについて

    Sub Kanrimas_call() Dim komo(18) As String, nara As String, st Dim finame(1) As String, foname(1) As String, narabi As String, path As String, kensu As Integer Dim ken As Integer, moji As String, c As Integer, kamei, code count = 0: cout = 0: kensu = 2: narabi = "": code = "": st = 0 path = "c:\aa着色加工計画\" finame(1) = "T_SORT.csv" foname(0) = "kanrisha.csv" foname(1) = "管理者マスタ.csv" Close #2 Close #1 Open path + foname(0) For Output As #2 'Kanrisha.csvを開く Open path + foname(0) For Append As #2 'kanrisha.csvを追加モードで開く Open path + finame(1) For Input As #1 '項目名の出力 Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18) Do Until EOF(1) = True Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18) 上記のマクロを実行すると、 Input #1, code, komo(1), komo(2), komo(3), komo(4), komo(5), komo(6), komo(7), komo(8), komo(9), komo(9), komo(10), komo(11), komo(12), komo(13), komo(14), komo(15), komo(16), komo(17), komo(18)の所で ファイルにこれ以上データがありませんというメッセージがでます。 何がおかしいのでしょうか、教えてください。 ちなみに、T_SORT.csvにはデータがA列からS列まで19列にデータがあります。

  • 【VBA】ExcelマクロでCSVファイルに保存したデータが""で囲まれてしまう

    添付図のような、Excel2003で作成した表内のデータを CSVで保存するマクロを作成したのですが、 図のように、CSVファイルに「""」で値が囲まれた状態で、 保存されてしまいます。 下記にマクロを記載しますので、 どうすれば文字列が「""」で囲まれずに、 カンマ区切りだけのデータで出力されるのか、 ご存知の方おられましたら、ご教示お願い致します。 Sub csv保存() Dim フォルダ名 As String Dim パス名 As String Dim ファイル名 As String Dim データ As Variant Dim 行数 As Long, 列数 As Integer Dim i As Integer, j As Long, k As Long ファイル名 = "test.csv" フォルダ名 = "csv" パス名 = ActiveWorkbook.Path & "\" & _ フォルダ名 'csvフォルダが存在しなければ作成する If Dir(パス名, vbDirectory) = "" Then MkDir パス名 End If ChDir パス名 Open ファイル名 For Output As #1 For i = 1 To Worksheets.Count Worksheets(i).Activate Worksheets(i).Cells(1, 1).Select ActiveCell.CurrentRegion.Select 行数 = Selection.Rows.Count 列数 = Selection.Columns.Count For j = 1 To 行数 For k = 1 To 列数 - 1 データ = Selection.Cells(j, k) _ .Value Write #1, データ; Next k Write #1, Selection.Cells(j, 列数) _ .Value Next j Next i Close #1 End Sub

  • Excelマクロでフォルダ内のCSVファイルを一括で読み込ませるには?

    Excelファイルと同階層にあるCSVファイルを読み込ませるマクロを作ってみたのですが、正常に動作しません。 アドバイスいただければ幸いです。 Excel2003を使用しています。 Sub 同階層フォルダ内のCSV読込_Click() Dim fname As String 'ファイル名 Dim pathname As String 'パス名 Dim dat(1 To 4) As Variant '読み込んだデータ Dim rr As Long '対象行番号 Dim i As Integer '列のオフセット Dim j As Integer 'ファイル識別番号のオフセット '同階層フォルダ内のCSVファイルを参照 pathname = ".\*.csv" fname = Dir(pathname, vbNormal) 'データを挿入する行番号 rr = 2 '該当するファイルがある間 Do While fname <> "" j = 0 j = j + 1 'ファイルを開く Open fname For Input As #j 'ファイルの終端まで Do Until EOF(j) 'データを取得 Input #j, dat(1), dat(2), dat(3), dat(4) '読み込んだデータをセルに出力 For i = 1 To 4 Cells(rr, i).Value = dat(i) Next '行番号を更新 rr = rr + 1 Loop Close #j 'フォルダ内の次のファイルを検索 fname = Dir() Loop End Sub

  • マクロの解読に困っています

    マクロの仕事がきましたが、初めてで苦戦しています。 5冊くらい本を読みながら、今あるマクロの解読をしています。 しかし、次のErrShori:の意味がどうしてもわかりません。 わかる方がいらっしゃいましたらぜひ教えてください。 ErrShori: Open sFilename & ".csv" For Output Shared As #1 その前の文もつけておきます。 Sub Auto_Close() On Error GoTo ErrShori Dim MaxPage As Integer Dim sFilename As String Dim sFilename2 As String Dim i As Integer Dim j As Integer Dim sKensaku As String MaxPage = 0 Do MaxPage = MaxPage + 1 Loop Until Cells(MaxPage * 17 + 21, 1) = "" ChDrive "W" ChDir "W:\" sFilename = Range("O22") sFilename2 = sFilename & ".csv" Workbooks(sFilename2).Close SaveChanges:=False ErrShori: Open sFilename & ".csv" For Output Shared As #1 以上です。 質問の仕方が悪かったらすみません。

  • 「パスが見つかりません」というエラー

    data.txtにセルの入力内容を出力したくて下記のようなプログラムを書きました。 ところが Open StrFN For Output As #IntFlNo のところで パスが見つかりません というエラーが出てしまいます。原因はわかりますでしょうか。 Sub test() Dim StrFN As String Dim i As Long Dim IntFlNo As Integer StrFN = "c\data.txt" IntFlNo = FreeFile Open StrFN For Output As #IntFlNo For i = 2 To 400000 Write #IntFlNo, Cells(i, 1) & "$" & Cells(i, 2) Next i Close #IntFlNo End Sub

  • エクセルのマクロ

    下記のマクロを実行するといつも.Findのところでフリーズしてしまいます。 同じ方法で違うBookからの取込には不具合はないのですが、何故だかわかりません。 ちょっと長くなりますが、どなたか教えてください。 'Function fn_KAKUNIN_Update(strSheetName As String, strInBookName As String) '変数宣言 Dim wksInSheet As Worksheet '入力シート Dim wkbInBook As Workbook '入力ブック Dim wksUpSheet As Worksheet '更新するシート Dim lngKAKUNIN_MaxRow As Long Dim lngSYACHO_MaxRow As Long Dim intMsg As Integer Dim strGenbaNo As String Dim i As Long Dim j As Long Dim rngFind As Range Dim lngStrNo As Long Set wkbInBook = Workbooks(strInBookName) Set wksInSheet = wkbInBook.Worksheets Set wksUpSheet = Workbooks(pstrBookName).Worksheets(strSheetName) fn_KAKUNIN_Update = 1 lngKAKUNIN_MaxRow = wksInSheet.Range("C4").CurrentRegion.Rows.Count lngSYACHO_MaxRow = wksUpSheet.Range("H4").CurrentRegion.Rows.Count lngStrNo = 4 For i = lngStrNo To lngSYACHO_MaxRow strGenbaNo = wksUpSheet.Range("H" & i) With wksInSheet.Range("C4:C" & lngKAKUNIN_MaxRow) Set rngFind = .Find(strGenbaNo, LookIn:=xlValues, MatchCase:=False) If rngFind Is Nothing Then Else

  • エクセルVBA CSVファイル出力について

    エクセルVBAでCSVファイル出力マクロを作成しています。 本を参考にして作成したのですが、日付のセルで 2007/7/22 8:29:45と記入させているのが #2007-07-22 08:29:45#と言う形で出力 されてしまいます。 そのまま「2007/7/22 8:29:45」と出力させるには どのようにしたらいいのでしょうか? 出力したデーターを基にアクセスに取り込んでデーター ベースにしようと思っているのですが、「#」がある ため、そのまま、時刻関数で取り込めないもので 困っています。 コードは以下のように書いてあります。 Sub WriteCsv() Dim myTxtFile As String, myFNo As Integer Dim myLastRow As Long, i As Long Dim ShName As String Application.ScreenUpdating = False ShName = ActiveSheet.Name myTxtFile = ActiveWorkbook.Path & "\" & ShName & ".csv" myLastRow = Range("A1").CurrentRegion.Rows.Count myFNo = FreeFile Open myTxtFile For Output As #myFNo For i = 1 To myLastRow Write #myFNo, Cells(i, 1), Cells(i, 2), Cells(i, 3) Next Close #myFNo MsgBox "このシートを元に「" & ShName & ".csv」を作成しました" End Sub 宜しくお願いいたします。

  • マクロ作成後、エラー70が出て動作しません。

    ■EXCEL2010のマクロについて■ マクロ作成後、下記のエラーが出てしまいます。 実行時エラー 70 書込みできません。 ↓デバックを見ると、この箇所に黄色いマークがつきます。 Set out = fs.CreateTextFile(fpath & "\sitelist.csv", True) 色々と確認して見ましたが、よくわかりません。 ★原因と思われるのが マクロ-シート(マクロ管理シート)を作成後、 そのファイルを開くと(マクロ管理シート1)で表示されてしまい、 エラー 1004が出ます。 ただし、ドロップ&ドラッグすれば、(マクロ管理シート)が表示され、 マクロが問題なく動作します。 どうすればよいのでしょうか? 知り合いにもらったマクロを元にいじっていますので、 よくわからない部分もありますが、よろしくお願いいたします。 --------------------------------------- 以下、マクロです。 Sub 作成_Click() Dim fpath As String Dim fs As Object Dim out As Object Dim i As Long Dim myArray() As String Dim title As String fpath = ActiveWorkbook.Path Set fs = CreateObject("Scripting.FileSystemObject") Set out = fs.CreateTextFile(fpath & "\sitelist.csv", True) For i = 5 To 105 title = Cells(i, 1) Mar = Cells(i, 2) Email = Cells(i, 3) URL = Cells(i, 4) msg = Cells(i, 5) category_miumiulink = Cells(i, 6) category_inavi = Cells(i, 7) other_link = Cells(i, 8) passwd = Cells(i, 9) keyword = Cells(i, 10) ame = Cells(i, 11) temprate = Cells(i, 12) jyanru = Cells(i, 13) If title = "" Then Exit For End If csv = "" csv = csv & Chr(34) & title & Chr(34) & "," csv = csv & Chr(34) & Mar & Chr(34) & "," csv = csv & Chr(34) & Email & Chr(34) & "," csv = csv & Chr(34) & URL & Chr(34) & "," csv = csv & Chr(34) & msg & Chr(34) & "," csv = csv & Chr(34) & category_miumiulink & Chr(34) & "," csv = csv & Chr(34) & category_inavi & Chr(34) & "," csv = csv & Chr(34) & other_link & Chr(34) & "," csv = csv & Chr(34) & passwd & Chr(34) & "," csv = csv & Chr(34) & keyword & Chr(34) & "," csv = csv & Chr(34) & ame & Chr(34) & "," csv = csv & Chr(34) & temprate & Chr(34) & "," csv = csv & Chr(34) & jyanru & Chr(34) Call out.writeline(csv) Next i MsgBox "作成お疲れ様でした♪" End Sub ---------------------------------------

  • VB6 「Line Input」でのリークについて

    VB6での「Line Input」命令使用時のメモリリークについて教えて下さい。 1分毎に3600行のCSVファイルを読み込むプログラムを作成しています。  (CSVファイルは1行500文字程度) 以下の【パターン1】は作成したプログラムの1部ですが、 (1)を3600回ループ時にパフォーマンスモニタでの「Private Bytes」が増加してしまいます。   (1ループ毎に増加せず、数十回ループする毎に増加します。) 試しに【パターン2】を作成し、CSVファイルはオープンのみ行い、 読み込みは行わずに、500文字の文字列が入った変数をコピーした場合は、 「Private Bytes」は増加しません。 基本的に違いは(1)と(2)の箇所だけなのですが、 「Line Input」命令の使用方法などで間違っている箇所があるのでしょうか? ご存知の方、教えて下さい。お願いします。 【パターン1】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim FP As Integer 'ファイル番号 (省略) : FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) Line Input #FP, CsvDataBuf(i)     ←(1) i = i + 1 Loop Close #FP : (省略) 【パターン2】 Private Sub read_Timer() Dim i As Long Dim CsvDataBuf(3600) As String 'CSV読込み変数 Dim tempBuf As String Dim FP As Integer 'ファイル番号 (省略) : tempBuf = "~500文字の文字列~" FP = FreeFile Open "C:\test.csv" For Input As #FP i = 0 Do While Not EOF(FP) And i <= (3600 - 1) CsvDataBuf(i) = tempBuf       ←(2) i = i + 1 Loop Close #FP : (省略)

  • エクセルの質問です。

    エクセル マクロについて質問です。 現在,以下のような記述をエクセル上のボタンに登録しています。 ボタンを押すと,デスクトップ上の任意のCSVファイルの選択を行い,CSVファイルを選択し,そのCSVデータを全てエクセル上のデータとして落としさせたいと思っています。 しかし,csvファイルによっては, 「実行時エラー  アプリケーション定義またはオブジェクト定義のエラーです。」と出て, 「デバック(D)」ボタンを押すと,下から4行目の 「Cells(i, j) = strCell」のところが,黄色くエラーとして表示されてしまいます。 下記の記述もネット上で皆さんに教えていただきながらなんとかやっているもので,正直自分自身でよく理解できていませんが,上記のようなエラーを回避する方法をどなたかご教示いただけないかと思います。 どうかよろしくお願いいたします。 Sub Macro5() Dim varFileName As Variant Dim intFree As Integer Dim strRec As String Dim strSplit() As String Dim i As Long, j As Long, k As Long Dim lngQuate As Long Dim strCell As String varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _ Title:="CSVファイルの選択") If varFileName = False Then Exit Sub End If intFree = FreeFile '空番号を取得 Open varFileName For Input As #intFree 'CSVファィルをオープン i = 0 Do Until EOF(intFree) Line Input #intFree, strRec '1行読み込み i = i + 1 j = 0 lngQuate = 0 strCell = "" For k = 1 To Len(strRec) Select Case Mid(strRec, k, 1) Case "," '「"」が偶数なら区切り、奇数ならただの文字 If lngQuate Mod 2 = 0 Then Call PutCell(i, j, strCell, lngQuate) Else strCell = strCell & Mid(strRec, k, 1) End If Case """" '「"」のカウントをとる lngQuate = lngQuate + 1 strCell = strCell & Mid(strRec, k, 1) Case Else strCell = strCell & Mid(strRec, k, 1) End Select Next '最終列の処理 Call PutCell(i, j, strCell, lngQuate) Loop Close #intFree End Sub Sub PutCell(ByRef i As Long, ByRef j As Long, ByRef strCell As String, ByRef lngQuate As Long) j = j + 1 '「""」を「"」で置換 strCell = Replace(strCell, """""", """") '前後の「"」を削除 If Left(strCell, 1) = """" And Right(strCell, 1) = """" Then strCell = Mid(strCell, 2, Len(strCell) - 2) End If Cells(i, j) = strCell strCell = "" lngQuate = 0 End Sub

専門家に質問してみよう