Excel VBA質問箱 IV

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

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


8926 / 13646 ツリー ←次へ | 前へ→

【30134】FileDateTimeについて みり 05/10/20(木) 14:08 質問[未読]
【30135】Re:FileDateTimeについて Jaka 05/10/20(木) 14:30 回答[未読]
【30168】Re:FileDateTimeについて みり 05/10/21(金) 9:46 お礼[未読]
【30172】Re:FileDateTimeについて Jaka 05/10/21(金) 10:19 発言[未読]
【30311】Re:FileDateTimeについて みり 05/10/25(火) 9:01 お礼[未読]
【30317】Re:FileDateTimeについて Jaka 05/10/25(火) 11:19 発言[未読]
【30319】Re:FileDateTimeについて みり 05/10/25(火) 13:28 お礼[未読]

【30134】FileDateTimeについて
質問  みり  - 05/10/20(木) 14:08 -

引用なし
パスワード
   FileDateTimeについて教えて下さい。
OPENしているファイルの更新日時を取得したいのですが(本当は更新日だけでいい)、FileDateTimeがうまくいきません。

file名という変数を使って
   FileDateTime(file名)   としても、また、
1回目の処理ではfile名="05m0001"なので、テストのため、
   FileDateTime("05m0001")  と記述してもだめです。

いろんな箇所で試したところ、ファイルOPEN直後に記述すると「ファイルがない」というエラーメッセージが出たり、OPEN前に記述すると、勝手に(?)関係ないtrapへ飛んだりするのですが…。
trapのラベルを使うと、エラーになったとき、goto trapの記述が無くても勝手に飛ぶのでしょうか?
(質問が2つになってしまいました)

【30135】Re:FileDateTimeについて
回答  Jaka  - 05/10/20(木) 14:30 -

引用なし
パスワード
   みてね!

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=10478;id=excel

【30168】Re:FileDateTimeについて
お礼  みり  - 05/10/21(金) 9:46 -

引用なし
パスワード
   ありがとうございました。解決しました。

trapの方は未だわかりませんが…。

【30172】Re:FileDateTimeについて
発言  Jaka  - 05/10/21(金) 10:19 -

引用なし
パスワード
    ▼みり さん:
>trapの方は未だわかりませんが…。
これかな?
[#17173]

【30311】Re:FileDateTimeについて
お礼  みり  - 05/10/25(火) 9:01 -

引用なし
パスワード
   ▼Jaka さん:
> ▼みり さん:
>>trapの方は未だわかりませんが…。
>これかな?
>[#17173]

ありがとうございます。
でも、On Error GoTo 〜 のこの使い方はわかるんですけど、On Error GoTo〜 や、On Error Resume Next の記述がない場合(その作り方が問題ですよね)、「なんでそんな所に飛ぶの?」というような場所(他のモジュールとか)に飛んでる場合があって、すごく不可解なのです。
ヘルプで調べたところ、「呼び出し側のプロシージャに使用可能なエラー処理ルーチンがあれば…」とか、「使用可能で非アクティブなエラー処理ルーチンが見つかるまで…」とか書いてあるので、そのせいでしょうか?
このヘルプの説明は詳しすぎて、というか、今の私の力では完全に理解するのは難しいです。

【30317】Re:FileDateTimeについて
発言  Jaka  - 05/10/25(火) 11:19 -

引用なし
パスワード
   >でも、On Error GoTo 〜 のこの使い方はわかるんですけど、On Error GoTo〜 や、On Error Resume Next の記述がない場合(その作り方が問題ですよね)、「なんでそんな所に飛ぶの?」というような場所(他のモジュールとか)に飛んでる場合があって、すごく不可解なのです。
なんて応対したらいいのか解んないけど、
私は、On Error GoTo 〜の方が使いづらいです。
使わないので今一解ってませんが、飛ばされた後、Resume使って同じ位置の戻らないとエラーがクリアできないから...。
On Error Resume Next だと、エラーフラグというがエラーナンバーをクリアするだけで済みます。

Sub aaaa()
  On Error Resume Next
  Sheets("Sheet200").Select
  If Err Then
    If MsgBox("シートがありません。" & vbLf & _
       "作りますか?", vbYesNo, vbQuestion) = vbYes Then
     Err.Clear
     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "ああああ"
    Else
     MsgBox "中止"
     Exit Sub
    End If
  End If
End Sub

それと、更新日ですが97以上ならファイルプロパティから取れました。
こちらはファイルが開いてないとダメですが。

Sub 最終更新日()
  Dim OPWB As Workbook, BDP As Object, FNm As String
  'FNm = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\pprprp.xls"
  'FNm = "pprprp.xls"
  FNm = Application.GetOpenFilename("Excelファイル (*.xls), *.xls")
  If FNm = "False" Then Exit Sub
  
  Application.ScreenUpdating = False
  On Error Resume Next
  'Set OPWB = Workbooks.Open(FNm)
  Set OPWB = Workbooks(FNm)
  For Each BDP In OPWB.BuiltinDocumentProperties
    'i = i + 1
    'ThisWorkbook.Sheets(1).Range("A" & i).Value = BDP.Name
    'ThisWorkbook.Sheets(1).Range("B" & i).Value = OPWB.BuiltinDocumentProperties(BDP.Name).Value
    'Last save time
    If BDP.Name = "Last save time" Then
      'Win98se & EXL97だとエラーになっていた?。
      'Win2000 & EXL97だとEmpty
      'EXL2000以上じゃないとダメ?
      TTM = OPWB.BuiltinDocumentProperties(BDP.Name).Value
      MsgBox "最終更新日、つまり最終保存日" & TTM

      Exit For
    End If
  Next
  OPWB.Close (False)
  Set OPBW = Nothing
  Application.ScreenUpdating = True
End Sub

【30319】Re:FileDateTimeについて
お礼  みり  - 05/10/25(火) 13:28 -

引用なし
パスワード
   ▼Jaka さん:

いろいろ教えていただき、ありがとうございます。

>私は、On Error GoTo 〜の方が使いづらいです。

そうなんですか?
初心者なので、よくわかってないのですが、On Error Resume Nextを使う方がよさそうですね。

On Error GoTo 0 で、「現在のプロシージャに含まれる使用可能なエラー処理ルーチンを無効」とあったのですが、これもどこに置くのが適当なのかよくわかってません。
なんとなく使ってしまってます。


>それと、更新日ですが97以上ならファイルプロパティから取れました。

ありがとうございます。
でも、いまいちコードがよくわからず、FileDateTimeの記述を使ってます。

今後ともよろしくお願いします。

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