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

この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「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

Q(COUNTIFS ?)B列に任意の値があり、D列からF列の間にも任意の値がある場合に値を返す関数式

会社で修理業者に物品の修理を依頼する仕事をしているのですが、修理の際に出張費がかかる場合があり、余計な出費を避けるため、エクセルで素早くチェックできるようにしたいと思っております。

添付ファイルのとおり、任意の行のB列と同じ値が他の行のB列にあって(業者名が同じで)、かつ、その行の修理日・修理日2・修理日3のいずれかの値から前後6日以内の値が他の行において修理日・修理日2・修理日3にあった場合に、G列に「調整」という文字が入るようにしたいと思っております。

どのように関数式を組めばよいのか、どなたかご教授願います。

Aベストアンサー

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
vA の1列目を結果書き出し用に再利用しています


Public Sub Samp1()
  Dim dic As Object
  Dim vA As Variant, vK As Variant
  Dim vRp As Variant, vRc As Variant
  Dim vDp As Variant, vDc As Variant
  Dim i As Long, j As Long
  Dim bSkip As Boolean
  Const CDAYW As Long = 6
  Const CMOJI As String = "調整"

  Set dic = CreateObject("Scripting.Dictionary")

  With Range("A3", Cells(Rows.Count, "A").End(xlUp))
    vA = .Columns("B:F").Value
    For i = 1 To UBound(vA)
      If (vA(i, 1) <> "") Then
        For j = 3 To UBound(vA, 2)
          If (vA(i, j) <> "") Then
            If (Not dic.Exists(vA(i, 1))) Then
              dic.Add vA(i, 1) _
                , CreateObject("Scripting.Dictionary")
            End If
            If (Not dic(vA(i, 1)).Exists(i)) Then
              dic(vA(i, 1)).Add i _
                , CreateObject("Scripting.Dictionary")
            End If
            dic(vA(i, 1))(i)(vA(i, j)) = Empty
          End If
        Next
        vA(i, 1) = ""
      End If
    Next

    For Each vK In dic.Keys
      For Each vRp In dic(vK).Keys
        If (vA(vRp, 1) = "") Then
          bSkip = False
          For Each vDp In dic(vK)(vRp).Keys
            For Each vRc In dic(vK).Keys
              If (vRp <> vRc) Then
                For Each vDc In dic(vK)(vRc).Keys
                  i = Abs(DateDiff("d", vDp, vDc))
                  If (i <= CDAYW) Then
                    vA(vRp, 1) = CMOJI
                    vA(vRc, 1) = CMOJI
                    bSkip = True
                    Exit For
                  End If
                Next
                If (bSkip) Then Exit For
              End If
            Next
            If (bSkip) Then Exit For
          Next
        End If
      Next
    Next
    .Columns("G").Value = vA
  End With

  Set dic = Nothing
End Sub

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
...続きを読む

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

QExcel 指定したフォルダから指定したファイルを、指定フォルダへ移すVBAを教えて頂けないですか?

指定フォルダ名、指定ファイル名は、管理シートに記載し指示する形です。またそのファイルを元のフォルダへ戻す指示も、管理シートを書き直すのではなくできたら嬉しいです。どなたかよろしくお願いいたします。

Aベストアンサー

No.6 の修正

上書き時にエラーが発生していました。
「Kill (先パス & "\" & Cells(行, 2).Value)」を次のように追加してください。
-----------------------------------------------------------------------------
Sub 送る()
Call 移動("送り")
End Sub

Sub 戻す()
Call 移動("戻し")
End Sub

Sub 移動(モード As String)
Dim 基本パス As String
Dim 元パス As String
Dim 先パス As String
Dim 行 As Long
Dim 回答 As Integer
基本パス = ThisWorkbook.Path & "\"
Sheets("管理シート").Select
For 行 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If モード = "送り" Then
元パス = 基本パス & Cells(行, 1).Value
先パス = 基本パス & Cells(行, 3).Value
Else
元パス = 基本パス & Cells(行, 3).Value
先パス = 基本パス & Cells(行, 1).Value
End If
If Dir(元パス & "\" & Cells(行, 2).Value) = "" Then
Range(Cells(行, 1), Cells(行, 3)).Select
回答 = MsgBox("元のファイルがありませんでした。" & Chr(13) & _
"飛ばしてして作業を続けますか?" & Chr(13) & Chr(13) & _
"はい : 飛ばして続行" & Chr(13) & Chr(13) & _
"いいえ : 全作業を中止して終了", vbDefaultButton2 + vbYesNo, モード)
If 回答 = vbNo Then Exit Sub
Else
If Dir(先パス & "\" & Cells(行, 2).Value) <> "" Then
Range(Cells(行, 1), Cells(行, 3)).Select
回答 = MsgBox("同名のファイルがありました。" & Chr(13) & _
"上書きしますか?" & Chr(13) & Chr(13) & _
"はい : 上書きして続行" & Chr(13) & Chr(13) & _
"いいえ : 上書きせず、飛ばして続行" & Chr(13) & Chr(13) & _
"キャンセル : 全作業を中止して終了", vbDefaultButton1 + vbYesNoCancel, モード)
If 回答 = vbCancel Then Exit Sub
If 回答 = vbYes Then
Kill (先パス & "\" & Cells(行, 2).Value)
Name 元パス & "\" & Cells(行, 2).Value As 先パス & "\" & Cells(行, 2).Value
End If
Else
Name 元パス & "\" & Cells(行, 2).Value As 先パス & "\" & Cells(行, 2).Value
End If
End If
Next
MsgBox ("終了しました")
End Sub
-----------------------------------------------------------------------------

No.6 の修正

上書き時にエラーが発生していました。
「Kill (先パス & "\" & Cells(行, 2).Value)」を次のように追加してください。
-----------------------------------------------------------------------------
Sub 送る()
Call 移動("送り")
End Sub

Sub 戻す()
Call 移動("戻し")
End Sub

Sub 移動(モード As String)
Dim 基本パス As String
Dim 元パス As String
Dim 先パス As String
Dim 行 As Long
Dim 回答 As Integer
基本パス = ThisWorkbook.Path & "\"
Sheets("管理シート").Select
...続きを読む

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

QエクセルVBAでセルにあるファイル名のファイルを同じくセルにあるフォルダ名のフォルダにコピー

お世話になります。
絶対パスがあり、コピー元、コピー先(格納先)としてシート上の操作で
ファイルをフォルダにコピーしたいのですが、VBAでできるでしょうか?

・B列B6以下にコピー元のファイル名(絶対パス)
・D6に格納先のフォルダ名(絶対パス)
があります。
この条件だけでコピー→格納するコードを教えていただけたら助かります。よろしくお願いします。

Aベストアンサー

またまた#1です。 (^o^)丿

同名ファイルがあるときは xxxx_01.jpg の形式の連番を付加して別名で保存する
のを考えてみました。(連番は Max10 まで)

ファイル名とコピー先のフォルダパス名にアンダースコア( _ )が付いていない
ことが条件です。

Sub Test2()
 Dim i, OldFile, OldName, FileExt, NewFile, NewName, n, Pos
 i = 6
 Do While Cells(i, 2) <> ""
  On Error Resume Next
  MkDir Cells(6, 4).Value  'コピー先に指定したフォルダがない場合は作成。
  OldFile = Cells(i, 2)
  OldName = Right(OldFile, Len(OldFile) - InStrRev(Cells(i, 2), "\") + 1)
  OldName = Left(OldName, InStrRev(OldName, ".") - 1)
  FileExt = Right(Cells(i, 2), Len(Cells(i, 2)) - InStrRev(Cells(i, 2), ".") + 1)
  NewFile = Cells(6, 4) & OldName & FileExt
  NewName = Left(NewFile, InStrRev(NewFile, ".") - 1)
  If Dir(NewFile) <> "" Then
   For n = 1 To 10
    Pos = InStrRev(NewName, "_")
    If Pos = 0 Then Pos = Len(NewName)
    NewFile = Left(NewName, Pos) & "_" & Format(n, "00") & FileExt
    If Dir(NewFile) = "" Then Exit For
   Next
  End If
  FileCopy OldFile, NewFile
  'Kill OldFile
  i = i + 1
 Loop
End Sub

またまた#1です。 (^o^)丿

同名ファイルがあるときは xxxx_01.jpg の形式の連番を付加して別名で保存する
のを考えてみました。(連番は Max10 まで)

ファイル名とコピー先のフォルダパス名にアンダースコア( _ )が付いていない
ことが条件です。

Sub Test2()
 Dim i, OldFile, OldName, FileExt, NewFile, NewName, n, Pos
 i = 6
 Do While Cells(i, 2) <> ""
  On Error Resume Next
  MkDir Cells(6, 4).Value  'コピー先に指定したフォルダがない場合は作成。
  OldFile =...続きを読む

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

QExcelで、文字列が一致した時は指定した文字に変換し、不一致の時は空白(Null)を返す関数、ありませんか?

Excelのデータ作成で困っています(ToT)例えば、「文字列“千葉”に一致すれば“千葉市内”に変更する」という関数を使用し、

東京→(Null)
埼玉→(Null)
横浜→(Null)
千葉→千葉市内
千葉→千葉市内
埼玉→(Null)

というように変換したいのですが、うまくいきません。
substitute関数を使ってみたのですが、一致しない時はNull(空白)ではなく、以下のように、元の文字列をそのまま返してしまうのです。

東京→東京
埼玉→埼玉
横浜→横浜
千葉→千葉市内
千葉→千葉市内
埼玉→埼玉

一致しない時はNull(空白)を返し、一致するときは指定した文字列に変更する関数やマクロなど、ご存じの方がいらっしゃいましたら、教えていただきたいです。
よろしくお願いします<m(__)m>

Aベストアンサー

A列を参照データとしB列に表示するとき

=IF(A1="千葉","千葉市内","")

ではだめですか?

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

QエクセルのVBAで、ひとつのセル内にある文章に特定のキーワードが含まれているかを返すマクロを作ったの

エクセルのVBAで、ひとつのセル内にある文章に特定のキーワードが含まれているかを返すマクロを作ったのですが、不具合があり直したいです。
不具合の内容
キーワード① リンゴ
キーワード② おいしいリンゴ
上記キーワードを調査する場合、おいしいリンゴのリンゴに反応してしまう為
文章においしいリンゴの文字があると

リンゴ ワード あり
おいしいリンゴ ワード あり

となってしまいます。

おいしいリンゴのリンゴについては、カウントしたくないのですが、どのような組み方をしたら実装できるでしょうか。

何卒よろしくお願いします。

Aベストアンサー

キーワードは文字数の多い順から検索します。最初に見つかった時点で、そのセルの処理を終了し、次のセルの検索に移ります。


人気Q&Aランキング

おすすめ情報