VBAマクロ、パスがありませんでとまります

このQ&Aのポイント
  • Excel2003 VBAのコードを作成して、実行しましたら実行時エラー'76'パスが見つかりませんと表示されています。Open pase ...... の行でとまってしまいます。なにが原因と考えられますか?
  • 問題の原因は、VBAのコード内で指定されているパスが存在しないためです。指定されているパスを確認し、存在するパスを指定してください。
  • また、ファイル名やパスに誤字やスペースが含まれている可能性も考えられますので、注意して確認してください。
回答を見る
  • ベストアンサー

VBAマクロ、パスがありませんでとまります。

Excel2003 VBAのコードを作成して、 実行しましたら ”実行時エラー'76' パスが見つかりません。" と表示されて Open pase ...... の行でとまってしまいます。 なにが原因とかんがえられますか? すいませんが、ご回答よろしくおねがいいたしますm(_ _)m Sub Macro1() Dim strarray() As Variant Dim counter As Integer Dim i As Long pase="C:\Documents and Settings\user\My Documents\" myname=Dir("C:\Documents and Settings\user\My Documents\",vbNormal) Do While myname <> "" If (GetAttr("C:\Documents and Settings\user\My Documents\" &_ myname) And vbNormal) = vbNormal Then ReDim Preserve strarry(counter+1) strarray(counter) = myname counter = counter + 1 End If myname = Dir Loop For i = 1 to counter Open pase & strarray(i) For Input As #1 Do Until EOF(1) ・ '処理 ・ ・ Loop Next i

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

For i = 0 to counter - 1 とするか、 Open pase & strarray(i - 1) For Input As #1 とするかのどちらか。

harapokochan
質問者

お礼

配列の部分、参考例文をそのままうつして、内容をよく理解していなっくって、 ReDim Preserve......部分で配列の要素まで強制的に 変更されて、配列の頭がstrarray(1)のように思っていました。 その部分でエラーが発生していたんですね。 たいへんたすかりました。 その後マクロプログラムは上手く走りました。 感謝いたします。

関連するQ&A

  • DIR関数を使ったファイル名の取得

    おはようございます。 txtファイル名とdocファイル名を取得したく、以下のコードを作成してみました。 DIR関数を使って、ファイルリストボックスのPatternプロバディのように、複数の形式のファイル名を同時に取得する方法はあるのでしょうか? 是非、教えてください。よろしくお願いします。 ----------------------------- Private Sub Form_Load() Dim MyName MyName = Dir("C:\My Documents\*.txt") Do While MyName <> "" MsgBox MyName MyName = Dir Loop MyName = Dir("C:\My Documents\*.doc") Do While MyName <> "" MsgBox MyName MyName = Dir Loop End End Sub -------------------------------------

  • エクセル VBA パスの記述方法を教えてください。

    Sub フォルダ作成() Dim UserName As String UserName = Environ("USERNAME") MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\売掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\買掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\管理表" End Sub 上記のようなマクロを記述してありますが、 C:ドライブ以外(D:ドライブやZ:ドライブ)で使用する場合が発生しましたので、 どのドライブでも使用出切る記述方法があれば御教示お願い致します。

  • フォルダ名の記述方法について御教示ください。VBA

    いつも御指導ありがとうございます。 皆様に御指導いただきながら、得意先別元帳の項目(前月残・当月入金・売上・残高等)の金額を取得して売掛金管理表を作成しています。 得意先別元帳のフォルダ名を年度(yyyyの部分)としている為に、変更しないと毎年使用できません。 売掛金管理表のセル(L5)に、年度が記載されていますので、それを利用してみましたが上手く出来ません。 変更しないで処理出来るようにするための記述を御教示御願申し上げます。 ●フォルダ構成 C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\売掛金元帳 ー 各得意先ファイル C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\管理表 ー 売掛金管理表と買掛金管理表ファイル Sub GetDatainFolder6() '管理表の作成 Dim i As Long Dim Fname As String Dim ans As Variant DoEvents Const myFolder As String = "C:\Documents and Settings\aaa\My Documents\販売\yyyy年11月決算\売掛金元帳\" Fname = Dir(myFolder & "*.xls") Do Until Len(Fname) = 0 FormPickUP Range("C6").Offset(i), myFolder & Fname, "6月" Range("C6").Offset(i).Resize(, 7).Value = _ Range("C6").Offset(i).Resize(, 7).Value Range("D6").Offset(i).Value = Mid(Fname, 1, InStrRev(Fname, ".") - 1) '拡張子は取る i = i + 1 Fname = Dir() Loop End Sub Function FormPickUP(rng As Range, ByVal myBk As String, ByVal mySh As String) 省略 End Function 宜しく御願いいたします。

  • Excel2003VBA Dir関数について

    Excel2003VBAを勉強中の者です。早速ですが質問させて頂きます。 C:\Documents and Settings\All Users\Documents\親フォルダ\の中に複数のフォルダと標準ファイルが混在しており、 フォーム上のコマンドボタンを押す事で、リストボックスにフォルダだけを表示させたく下のコードを作成しました。 動作としては一旦FileDateという配列に、取得したフォルダ名をセットし、それをリストボックスに出力する事としました。 配列FileDateはDir関数でフォルダ名をひとつ取得する度に、1つずつ要素数を増やしております。 自分のフォルダを表す記号”.”と一つ上のフォルダを表す記号”..”は省きます。 このコードを実行してみた結果、”.”と”..”は省く事ができました。 しかし次に標準のフォルダが変数bufに入った状態からエラーが発生してしまいます。 ■エラー発生■の部分で「実行エラー53 ファイルが見つかりません。」と出てしまうのです。 Dir関数が正しく使えていないのだと思います。 ローカルウィンドウで確認しましたが、変数bufにはフォルダ名がちゃんとセットされている事からファイルそのものは認識してくれている様に思えます。 自分なりにかなり調べ、色々と試してみましたがどうにも手に負えませんでした。 エラーの発生原因と対策をご教示頂きたく、どなたかご助力をお願い致します。 Private Sub CommandButton1_Click() Dim buf As String Dim i As Long i = 1 Dim FileDate() As Variant ReDim FileDate(1 To i) As Variant buf = Dir("C:\Documents and Settings\All Users\Documents\親フォルダ\", vbDirectory) Do If GetAttr(buf) And vbDirectory Then '■エラー発生■ If buf <> "" And buf <> "." And buf <> ".." Then FileDate(i) = buf i = i + 1 ReDim Preserve FileDate(1 To i) End If End If buf = Dir() Loop While buf <> "" ListBox1.List = FileDate End Sub

  • ExcelVBAの使い方 ¥の使い方おしえてください。

    ExcelVBAの使い方 ¥の使い方おしえてください。 現在、パス名取得に努めているのですが、最後がうまくいきません。 Dim MyObjFo As Object Dim Myname As String Set MyObjFo = CreateObject("Shell.Application") _ .BrowseForFolder(0, "フォルダを選択して下さい", 0, "C:\Documents and Settings\ユーザー名\My Documents\") If MyObjFo Is Nothing Then Exit Sub MsgBox MyObjFo.Items().Item().Path MsgBox MyObjFo.Items.Item.Path Myname = MyObjFo.Self.Path For i = 1 To 7 ActiveSheet.Pictures.Insert( _ " " & Myname & " & " ¥ " & " & Cells(i, "A") & ".JPG").Select 上は途中までのそーすですが変数MynameとCells(i, "A") をつなぐ間に入る¥がうまく機能しなく エクセルシート上に画像が張り付いていかないのでパス名の中の¥をうまくつないでフルパスにする方法を 教えてください。 お願いします。

  • エクセル(VBA)でファイル名(サブフォルダ含む)、更新日時を表示させたい

    エクセルのVBAであるフォルダ以下の全てのファイル名と更新時間をエクセルシート上に表示させたく、以下のプログラムを作成したのですが 、サブフォルダ内のファイルを表示させることができません。何か良い方法がありましたら教えていただけないでしょうか?宜しくお願いいたします。 Sub SAMPLE() Dim serchPass As String j = 1 Mypath = "C:\My Documents\" MyName = Dir(Mypath, vbDirectory) Do While MyName <> "" ' ループを開始します。 ' 現在のフォルダと親フォルダは無視します。 If MyName <> "." And MyName <> ".." Then ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。 If (GetAttr(Mypath & MyName) And vbDirectory) = vbDirectory Then Debug.Print MyName ' フォルダであれば、それを表示します。 Else: GoTo 10 End If serchPass = Mypath & MyName With Application.FileSearch .NewSearch .LookIn = serchPass If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Cells(i + j, 1).Value = .FoundFiles(i) Cells(i + j, 3) = FileDateTime(.FoundFiles(i)) Next i j = i + j End If End With 10 End If    MyName = Dir ' 次のフォルダ名を返します。 Loop End Sub

  • ExcelのVBAについて

    こんにちは、VBA初心者です。 C:\pictureの中に以下のファイルがあります。 DSC_0134.JPG~DSC_0154.JPG これらのファイルをExcelのA列1~20行に書かれた文字△○%&◎~▲▽%%★に.JPGをつけて保存したくて以下のコードを書きました。 Dim buf As String Dim msg As String Dim i As Integer Dim A As Variant i = 1 buf = Dir("dsc*.jpg", vbNormal) Do While buf <> "" Do While i < 21 buf = Dir() msg = buf 'msg=元の名前 A = Worksheets("sheet1").Cells(i, 1).Value     Worksheets("sheet1").Cells(i, 2).Value = msg          Name "C:\picture\msg" As "C:\picture\A.jpg"     i = i + 1 Loop Loop Name "C:\picture\msg" As "C:\picture\A.jpg"のところで、「ファイルがありません。」となってしまいます。 あと、Worksheets("sheet1").Cells(i, 2).Value = msgのところで、\pictureの中の最初のファイル(DSC_0134.JPG)を表示しません。 どこを直せばよいのでしょうか?

  • VBAでtxtを読み込みxlsで保存したい

    C:\Documents and Settings\All Users\デスクトップ\sample.txt は次のようなデータになっています。 A B C 1,234 567,890 23,333 1,234 567,890 23,333 このデータをVBAを使ってExcelに読み込み、C:\Documents and Settings\All Users\デスクトップ\sample.xls として保存にしたいのですが、どのようなコードを書けばよいものでしょうか? sub test() Dim fso, f, ts Dim sline As String Set fso = CreateObject("scripting.filesystemobject") Set f = fso.getfile("C:\Documents and Settings\All Users\デスクトップ\sample.txt") Set ts = f.openastextstream(1) Do While ts.atendofstream <> True sline = sline & ts.readline & vbCrLf Loop ts.Close ' MsgBox sline End Sub ここまでいったのですが、slineをexcelにだすことができません。 教えていただけると助かります・。

  • エクセル VBA バッチが動かない。

    以下のVBAを試行錯誤の末(未熟なもので・・) 作ってみました。 デスクトップ上のフォルダを確認にて、存在する場合はそのままバッチ実行、 存在しない場合はフォルダを作成してバッチ実行。 というものなのですが、フォルダが存在する場合はすんなり行くのですが、 存在しない場合、フォルダを作成した後、バッチ処理がされなくて 困っています。どこが悪いのでしょうか? 是非ご教授お願いいたします。 ちなみにバッチはXCOPYです。 Sub SET_Original() Dim strPATHNAME As String strPATHNAME = "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" If StrConv(strPATHNAME, vbUpperCase) = "FALSE" Then Exit Sub If Dir(strPATHNAME, vbDirectory) = "" Then MsgBox "フォルダは作成します。", vbExclamation MkDir "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" Exit Sub End If Dim str As Variant str = Shell("c:\Documents and Settings\ユーザー\デスクトップ\copy.bat") End Sub

  • ACCESS2013で複数ファイルのインポート

    お世話になっております。 環境は windows7 ACCESS2013 ACCESS2013を使って特定フォルダにある、AAA1.csv AAA2.csv・・・・とファイル名下一桁が連番になっているデータをACCESS2013のT_AAAという名前のテーブルにインポートをさせたいです。 テーブルのフィールド名やデータ型はどのファイルも同一です。 色々とネットで検索したのですが、あまりに初心者レベルのために理解できずにおります。 アドバイスをお願いいたします。 ネットで調べて真似して書いてみましたがエラーになります。 DoCmdでエラーになります。 どこが悪いのかさっぱり解りません。 Private Sub コマンド0_Click() Dim MyPath As String Dim MyCSV As String MyPath = "C:\Users\OOO_OOO\Desktop\test\AAA*.csv" MyName = Dir(MyPath, vbNormal) Do While MyName <> "" DoCmd.TransferText acImportDelim, "T_AAA", _ "C:\Users\OOO_OOO\Desktop\test\" & MyName, False MyName = Dir Loop End Sub 大変申し訳ございませんが、アドバイスをお願い申し上げます。

専門家に質問してみよう