過去ログ

                                Page     580
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼ファイルの検索して開く。なければ作る  飛影 03/1/20(月) 18:52
   ┗Re:ファイルの検索して開く。なければ作る  BOTTA 03/1/20(月) 20:18
      ┗ありがとうございました!  飛影 03/1/21(火) 9:47
         ┗自分自身が許さないので  BOTTA 03/1/22(水) 0:32

 ───────────────────────────────────────
 ■題名 : ファイルの検索して開く。なければ作る
 ■名前 : 飛影
 ■日付 : 03/1/20(月) 18:52
 -------------------------------------------------------------------------
   はじめて投稿します。飛影ともうします。
VBAを始めて間もない初心者です。
質問ですが、ファイルを検索(例200301.xls)して、あればそのファイルを開く。なければある特定のファイルを開いて保存(200301xls)してもう一度検索をかけるというマクロを作りたいのですが、どうしても実行エラー1004
ファイルにアクセスできません。というエラーが出てしまいます。

For i = 1 To 2

FileName = Format(Now(), "yyyymm")

Application.DisplayAlerts = False '確認ダイアログを表示させない
Application.ScreenUpdating = False '画面更新を中断する<
On Error GoTo Err_chek
' フォルダ「MyDocuments」に指定したファイルがあるとき、ファイルを展開する
Workbooks.Open FileName:= _
ActiveWorkbook.Path & "\DATA\" & FileName & ".xls"
GoTo Owari
Err_chek:
' フォルダ「MyDocuments」に指定したファイルがないとき、ファイルを新規作成して名前を付ける
Workbooks.Open FileName:= _
"\My Documents\検討中\test.xls"
Workbooks("test.xls").Activate
ActiveWorkbook.SaveAs FileName:="\My Documents\検証中\DATA" & FileName & ".xls"
Owari:
Application.DisplayAlerts = True '確認ダイアログを表示する
Workbooks("data" & FileName & ".xls").Close
Next i

どうやればうまく動くかわかりません。すいませんがわかる方がおられれば
教えてください。よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:ファイルの検索して開く。なければ作る  ■名前 : BOTTA  ■日付 : 03/1/20(月) 20:18  -------------------------------------------------------------------------
   飛影さん、こんにちは。

          :
          :
>Err_chek:
>' フォルダ「MyDocuments」に指定したファイルがないとき、ファイルを新規作成して名前を付ける
>Workbooks.Open FileName:= _
>"\My Documents\検討中\test.xls"
  ↑"C:\My Documents\検討中\test.xls" 'ドライブ名がありません
>Workbooks("test.xls").Activate
>ActiveWorkbook.SaveAs FileName:="\My Documents\検証中\DATA" & FileName & ".xls"
  ↑'ここも
>Owari:
>Application.DisplayAlerts = True '確認ダイアログを表示する
>Workbooks("data" & FileName & ".xls").Close
  ↑Workbooks("\DATA\" & FileName & ".xls").Close
>Next i
>
とりあえず気づいたところ。検証してません。^^;

検証しました。
Sub Test()
Dim Filename As String, myPath As String

  myPath = ActiveWorkbook.Path & "\"
  Filename = Format(Now(), "yyyymm") & ".xls"

  Application.DisplayAlerts = False
  Application.ScreenUpdating = False

  On Error GoTo Err_chek

  Workbooks.Open Filename:=myPath & Filename
  GoTo Owari

Err_chek:
  Workbooks.Open Filename:=myPath & "test.xls"
  Workbooks("test.xls").Activate
  ActiveWorkbook.SaveAs Filename:=myPath & Filename

Owari:
  Application.DisplayAlerts = True
  Workbooks(Filename).Close
  Application.ScreenUpdating = True '一応これも元に戻しましょう

End Sub

パスなどは、スペル間違いでつまずくと時間のロスなので変数に入れました。
 ───────────────────────────────────────  ■題名 : ありがとうございました!  ■名前 : 飛影  ■日付 : 03/1/21(火) 9:47  -------------------------------------------------------------------------
   BOTTAさん ありがとうございました。
きちんと動作してやりたいことが出来ました。
これからも質問をすると思いますがよろしくお願いします。
 ───────────────────────────────────────  ■題名 : 自分自身が許さないので  ■名前 : BOTTA  ■日付 : 03/1/22(水) 0:32  -------------------------------------------------------------------------
   飛影さん、皆さんこんばんは。

上の例だと、引数の名前と変数の名前が重複しています。
変数名は、別のものに変えた方がいいです。

あまり気にしなくてもいいかもしれませんが、
私、個人的にはとても気になりますので、
これを見ていただいた方に、お詫びいたします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 580