エクセルのマクロのコードで、あるフォルダに指定したファイルの"ある"・"なし"を返す関数などあるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

muneさんこんにちは


質問の意味がよくわかりませんが
指定したパスにファイルがあるか?ということですか?
そう解釈して進めます

  FILENAME = "ドライブ名:\フォルダ名\ファイル名"
str = Dir$(FILENAME)

  If str = "" Then
'ファイルが存在しなかった場合の処理
End If

でうまくいくと思います
    • good
    • 0

こんにちは。

maruru01です。

Dir関数を使用します。
詳細はヘルプを参照して下さい。
では。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルである項目が別のファイルに存在するかマスタチェックをしたい

エクセルであるシートある列(シート1)に値が入っています。(例:AAA,BBB,CCC)その項目に対してマスタの存在チェックをしたいのですが、マスタは別シート(シート2)上のある列に入っています。(例:AAA,BBB)
シート1上にシート2に存在する項目であればTRUE,なければFALSEを入れたシートを作成したいのですが、どのようにすればいいのでしょうか?

Aベストアンサー

あるセル範囲の中から、値を検索してセル範囲の番号(5番目等)を返す関数MATCHを使用して
=MATCH("AAA",Sheet1!A1:A7,0)

MATCHは見つからなかった場合はエラーを返すため、ISERRORで判定する。
=ISERROR(MATCH("AAA",Sheet1!A1:A7,0))

とすれば、値を検索して見つかった場合はFalse(エラーではないため)、見つからなかった場合はTrue(エラーになるため)

仕様とは正反対だ!!

それではということで、NOTで返り値を逆に変換して
=NOT(ISERROR(MATCH("AAA",Sheet1!A1:A7,0)))

で、めでたく仕様が満たせます。


念のため、別のシートの参照方法
通常の参照であれば、A1:A7など。(開始セル:終了セル)
別のシートへの参照、Sheet1!A1:A7(シート名!開始セル:終了セル)
別のファイルへの参照、'[C:\book1.xls]Sheet1'!A1:A7('[フルパスファイル名]シート名'!開始セル:終了セル)

あるセル範囲の中から、値を検索してセル範囲の番号(5番目等)を返す関数MATCHを使用して
=MATCH("AAA",Sheet1!A1:A7,0)

MATCHは見つからなかった場合はエラーを返すため、ISERRORで判定する。
=ISERROR(MATCH("AAA",Sheet1!A1:A7,0))

とすれば、値を検索して見つかった場合はFalse(エラーではないため)、見つからなかった場合はTrue(エラーになるため)

仕様とは正反対だ!!

それではということで、NOTで返り値を逆に変換して
=NOT(ISERROR(MATCH("AAA",Sheet1!A1:A7,0)))

で、めでたく仕様が満た...続きを読む

Qエクセルにフォルダー内のファイル名を取り込みたい。

WINDOWS XP を使用しております。
例えば、『Aフォルダ』に『文書1』『文書2』『文書3』というファイルがあったとします。これらのファイル名をエクセルのそれぞれのセルに一括で取り込みたいのですがどうすれば良いのでしょうか?
解説してある、HPがあればリンク先教えて下さい。
よろしくお願い致します。

Aベストアンサー

名前の定義と関数だけでも可能です。

指定したディレクトリ内のファイル一覧表を作成します。
1.名前を定義します。
  ・名前:FL (例です。実際は任意です。) 
  ・参照範囲:=INDEX(FILES(Sheet1!$A$1&"\*.xls"),ROW()-1)
2.セルA1に、検索対象のフォルダのフルパスを入力します。
  例)C:\_MyFiles\Office_Misc\1_Excel
3.セルA2に =FL と入力して下方にコピーします。

これはExcelファイルだけ対象にした場合ですが、「参照範囲」の数式内の
拡張子を変えれば、どの種類でも扱えます。(\*.* も可)

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

QACCESS、VBAでEXCELファイルをコピーはできますか

ACCESS、VBAでEXCELファイルをコピーはできますか。
同じフォルダーにあるEXCELファイル:Aファイルを削除してA_BACKファイルをAファイルとしてコピーしたい。
宜しくお願いします。

Aベストアンサー

Excelファイルの複製でしたら、FileCopyを使用すれば可能だと思います:
http://www.tsware.jp/tips/tips_302.htm

ご質問の内容であれば、仮にcドライブ直下であれば以下のようになります:
FileCopy "c:\A_BACK.xls", "c:\A.xls"


なお、古いファイル「A.xls」を明示的に削除しなくても、上書きされます。
逆にいうと上書き時に確認Msgが出ないので、その確認もしたい場合は、
FileExistを使用してファイルの有無を確認するコードを作る必要があります。
http://www.tsware.jp/tips/tips_103.htm

QEXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる

EXCELのVBAでマクロを使ってファイルを開こうとしている際、指定したファイルが存在しなかった場合、普通はマクロのエラーが出て「ファイルが存在しません」となりますが、指定したファイルが存在しなかった場合には、メッセージボックスを表示させ、そこで処理を中止させるか、または、その無いファイルの処理は飛ばして次のファイルの処理を行う用にさせることはできるでしょうか?

Sub test1()
Workbooks.Open Filename:="C:\Documents and Settings\001.xls
(001が存在しない場合メッセージボックスを出しマクロを中止するか次の002を開くか選ぶ)
Workbooks.Open Filename:="C:\Documents and Settings\002.xls
End sub

Aベストアンサー

こんな感じでしょうか?

Sub sample()
Dim Fname As String
Fname = "C:\Documents and Settings\001.xls"

If Dir(Fname) <> "" Then 'ファイルの有無をチェック
Workbooks.Open Filename:=Fname
ElseIf MsgBox("ファイル2を開きますか?", vbYesNo + vbQuestion, "問い合わせ") = vbYes Then
Workbooks.Open Filename:="C:\Documents and Settings\002.xls"
End If
End Sub

QExcel VBAでリンク切れをチェックしたい。

Excel VBAでリンク切れをチェックしたい。
図のように、リンク一覧からリンクを調べ、問題なければ「○」を表示し、リンク切れの場合は「×」を表示したいんですが、どんなプログラムを組めばよいですか?
よろしくお願いします。

Aベストアンサー

誰もレスを付けないと思いましたので、こちらでも作りましたのでアップしておきます。
#1の方とは、少し意味が違う部分があるかと思います。

以前、ここの掲示板で出したことがあると思うのですが、もう見つかりません。

一応、今回は、自分用で作ってみました。プロバイダからクレームが付きそうな気がしましたが、実行してしまいました。常識の範囲でお使いください。あまり速くはありませんが、ハングはしませんでした。

リンク先のチェックは、838件を一気にチェックしてしまいましたが、これほどはやらないほうが良いかもしれません。100件やって休むとかしたほうが良いような気がします。

ユーザー定義関数の戻り値は、いくつかあります。ステータス200は、◯ですが、その他は、種類がいろいろありますので、×にせずに数値や文字にしました。基本的に、ステータスコードの200は、全部返しました。

数字については、ステータス・コード表をごらんになってください。
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/status.html

例:
404 サイトがなくなっています。
403 アクセス権限がないということですから、ログインしなければ分からないかもしれません。
他にも、いくつか種類が出てきます。
n.a と出るのは、サーバーが受け付けないものだと思います。

アンチウィルスソフトで、禁止区域に入った時は、メッセージが出てきました。しかし、そのままで続いていきます。
このマクロ使用中でも、スクロールは可能です。

場所は標準モジュールです。

''//--
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private objHTTP As Object
Sub Main_URLChecking()
  Dim c As Range
  Dim i As Long
  ''Microsoft WinHTTP Service, version 5.1 '参照設定する場合
  ''Set objHTTP=New winHttp.WinHttpRequest '
  For Each c In Range("B2", Cells(Rows.Count, 2).End(xlUp))
    If LCase(c.Value) Like "http://*" Then
      c.Offset(, 1).Value = CheckURL(c.Value)
      Sleep 200  'Wait を掛ける
      DoEvents   'ESCで離脱できるようにする。
    End If
  Next
   Set objHTTP = Nothing
End Sub
Function CheckURL(ByVal strURL As String) As Variant
  Dim num As Variant
  On Error GoTo ErrHandler
  If objHTTP Is Nothing Then
     Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
  End If
  objHTTP.Open "GET", strURL, False
  objHTTP.Send
  If objHTTP.Status = 200 Then
    CheckURL = "◯"
  Else
    CheckURL = objHTTP.Status
  End If
  Exit Function
ErrHandler:
  If Err() <> 0 Then
    CheckURL = "n.a"
  End If
End Function

''//--


なお、今度は、これを、ハイパーリンクのリストに反映しないといけないのかな?

誰もレスを付けないと思いましたので、こちらでも作りましたのでアップしておきます。
#1の方とは、少し意味が違う部分があるかと思います。

以前、ここの掲示板で出したことがあると思うのですが、もう見つかりません。

一応、今回は、自分用で作ってみました。プロバイダからクレームが付きそうな気がしましたが、実行してしまいました。常識の範囲でお使いください。あまり速くはありませんが、ハングはしませんでした。

リンク先のチェックは、838件を一気にチェックしてしまいましたが、これほどはやらな...続きを読む


人気Q&Aランキング

おすすめ情報