Excel VBA質問箱 IV

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

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


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

【22947】違うフォルダのファイル名の一部が同じファイルを選ぶ MIKA 05/3/8(火) 14:43 質問[未読]
【22948】Re:違うフォルダのファイル名の一部が同じ... IROC 05/3/8(火) 15:13 回答[未読]
【22951】Re:違うフォルダのファイル名の一部が同じ... MIKA 05/3/8(火) 15:29 質問[未読]
【22955】Re:違うフォルダのファイル名の一部が同... IROC 05/3/8(火) 17:09 回答[未読]
【22993】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/9(水) 16:53 発言[未読]
【23002】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/9(水) 18:00 質問[未読]
【23005】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/9(水) 19:43 発言[未読]
【23051】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/11(金) 13:18 質問[未読]
【23052】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/11(金) 14:16 発言[未読]
【23053】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/11(金) 14:20 質問[未読]
【23056】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/11(金) 16:21 回答[未読]
【23060】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/11(金) 17:16 お礼[未読]
【23115】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/14(月) 10:27 質問[未読]
【23128】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/14(月) 14:26 発言[未読]
【23166】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/15(火) 13:50 質問[未読]
【23170】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/15(火) 14:56 発言[未読]
【23172】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/15(火) 15:22 お礼[未読]
【23173】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/15(火) 15:28 発言[未読]
【23174】Re:違うフォルダのファイル名の一部が同... MIKA 05/3/15(火) 15:32 発言[未読]
【23176】Re:違うフォルダのファイル名の一部が同... G-Luck 05/3/15(火) 15:58 発言[未読]

【22947】違うフォルダのファイル名の一部が同じフ...
質問  MIKA  - 05/3/8(火) 14:43 -

引用なし
パスワード
   こんにちは。
どうにも困ってしまい、投稿します。
お教えください。

Aフォルダに
   ★★200501.xls
   ☆☆200501.xls
   ◇◇200501.xls
などのファイル名があるフォルダで

Bフォルダに
   ABC★★.xls
   ABC☆☆.xls
   ABC◇◇.xls
というようなファイル名のフォルダがあります。

ABC★★.xlsの2行目以下のデータを
★★200501.xlsのB18:E18にコピー

ABC☆☆.xlsのの2行目以下のデータを
☆☆200501.xlsのB18:E18にコピー
というようにしたいのですが、
どのようなにさせたらできるのでしょうか?

【22948】Re:違うフォルダのファイル名の一部が同...
回答  IROC  - 05/3/8(火) 15:13 -

引用なし
パスワード
   ファイル名の判定なら文字列の判定ですよね?

先頭2文字がキーなら

Dim myKey As String
Dim myFile As String

 myKey = Left("★★200501.xls" , 2)
 myFile = "ABC★★.xls"

 If Instr(myFile, myKey) <> "" Then
   MsgBox "該当するファイルです"
 Else
   MsgBox "該当しません"
 End If


フォルダ内のファイル名の取得は、ヘルプのDir関数の使用例を参考にして下さい。

【22951】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/8(火) 15:29 -

引用なし
パスワード
   ▼IROC さん:
>ファイル名の判定なら文字列の判定ですよね?
>
>先頭2文字がキーなら
>

一番目の質問に書き忘れたのですが、
★の部分が2文字と、3文字のファイル名があるのですが、
その場合はどのように処理をしたらいいのでしょうか?


>Dim myKey As String
>Dim myFile As String
>
> myKey = Left("★★200501.xls" , 2)
> myFile = "ABC★★.xls"
>
> If Instr(myFile, myKey) <> "" Then
>   MsgBox "該当するファイルです"
> Else
>   MsgBox "該当しません"
> End If
>

上だと、一つのファイルに対して、上のコードを書かないといけないのですよね?
でも、各々30個以上のファイル数があり、30個以上

 myKey = Left("◇◇200501.xls" , 2)
 myFile = "ABC◇◇.xls"
     ・
     ・
     ・

というように書いていくのでしょうか?


>フォルダ内のファイル名の取得は、ヘルプのDir関数の使用例を参考にして下さい。

ヘルプはインストールされていませんが
調べて頑張ってみます。

【22955】Re:違うフォルダのファイル名の一部が同...
回答  IROC  - 05/3/8(火) 17:09 -

引用なし
パスワード
   >一番目の質問に書き忘れたのですが、
>★の部分が2文字と、3文字のファイル名があるのですが、
>その場合はどのように処理をしたらいいのでしょうか?

それはどのように判別すればよいのでしょうか?
実際のファイル名をいくつか挙げていただけませんか?
何らかの法則がないことには、処理できませんので。


>上だと、一つのファイルに対して、上のコードを書かないといけないのですよね?
>でも、各々30個以上のファイル数があり、30個以上

ひとまずフォルダ内のファイル名をセルに抽出するマクロを載せておきます。

Sub ファイル名抽出マクロ()
Dim myFileName As String
Dim myDir As String
  
  myDir = "C:\Data\" 'フォルダの指定

  myFileName = Dir(myDir & "*", vbHidden + vbSystem)

  Do
    Range("A65536").End(xlUp).Offset(1).Value = myDir
    Range("B65536").End(xlUp).Offset(1).Value = myFileName
    myFileName = Dir()
  Loop Until myFileName = vbNullString
  
  Range("A1").Value = "フォルダ名"
  Range("B1").Value = "ファイル名"
  Columns("A:B").AutoFit
End Sub

【22993】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/9(水) 16:53 -

引用なし
パスワード
   MIKA さん IROC さん こんにちは、

Sheet1 の A列にフォルダAのファイル名、B列に対応するフォルダBのファイル名が出力されるように作ってみました。
AにあってBに無いものはB列は空白
Aになくて、Bにあるものは出力されません。

FileDialog は Office XP 以降が必要です。
そうでない場合は、別の手段でフォルダ名を設定してください。

'以下コード
Option Explicit

Sub ファイル名抽出マクロ()
  
  Const myFileNameA As String = "*200501.xls"
  Const myFileNameB As String = "ABC*.xls"
  Dim myFolderA  As String
  Dim myFolderB  As String
  Dim FnA     As String
  Dim FnB     As String
  Dim KENMEI   As String
  Dim myShell   As Variant
  Dim ret     As Variant
  Dim iFn     As Variant
  Dim rgOut    As Range
  Dim buf(1 To 1, 1 To 2) As Variant
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Title = "フォルダA"
    .ButtonName = "選択"
    ret = .Show
    If ret = 0 Then Exit Sub
    myFolderA = .SelectedItems(1)
  End With
  With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Title = "フォルダB"
    .ButtonName = "選択"
    ret = .Show
    If ret = 0 Then Exit Sub
    myFolderB = .SelectedItems(1)
  End With
  
'  myFolderA = "フォルダAのパス"
'  myFolderB = "フォルダBのパス"

  With Application.FileSearch
    .LookIn = myFolderA
    .SearchSubFolders = False
    .Filename = myFileNameA
    .Execute
  End With
  
  Set rgOut = ThisWorkbook.Worksheets("Sheet1").Range("A1:B1")
  
  For Each iFn In Application.FileSearch.FoundFiles
    FnA = Dir(iFn)
    KENMEI = Left(FnA, Len(FnA) - 10)
    FnB = WorksheetFunction.Substitute(myFileNameB, "*", KENMEI)
    FnB = Dir(myFolderB & Application.PathSeparator & FnB)
    buf(1, 1) = FnA
    buf(1, 2) = FnB
    rgOut = buf
    Set rgOut = rgOut.Offset(1, 0)
    
    'ここで、FnA,FnBを利用して、処理を記入する。
    
  Next iFn
End Sub

【23002】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/9(水) 18:00 -

引用なし
パスワード
   G-Luck さんありがとうございます。
ただ、ファイル名を比べるだけではなく、
一部のファイル名が一致するBフォルダのファイルのシートの2行目以下のデータを
AフォルダのシートのB18:E18へコピーさせたいのです。
↓のような状況です。

Aフォルダに
   ★★200501.xls
   ☆☆200501.xls
   ◇◇200501.xls・・・
などのファイルのあるフォルダで

Bフォルダに
   ★★ABC.xls
   ☆☆ABC.xls
   ◇◇ABC.xls・・・
というようなファイルのあるのフォルダがあります。

AフォルダとBフォルダの★★が一致するファイルの

★★ABC.xlsの2行目以下のデータを
★★200501.xlsのB18:E18にコピー

(☆☆や◇◇なども順に)

というようにしたいのですが、
どのようなにさせたらできるのでしょうか?

【23005】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/9(水) 19:43 -

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

>★★ABC.xlsの2行目以下のデータを
>★★200501.xlsのB18:E18にコピー

この文からだけでは、答えが出せませんよ。

2行目以下のデータとは、どうゆうことですか?
A2:VI2にデータがあるのですか?
A2:A65536にデータがあるのですか?
セルの範囲はB18:E18の範囲に収まるのですか?
セルの結合は有りますか?
コピーするのは数式ですか?
セルの色は、罫線は?文字サイズは?

そんなことはさておき、
セルのコピーをマクロで出来ますか?
Excelファイルを開けますか?
閉じれますか?

【23051】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/11(金) 13:18 -

引用なし
パスワード
   >2行目以下のデータとは、どうゆうことですか?
>A2:VI2にデータがあるのですか?
>A2:A65536にデータがあるのですか?
>セルの範囲はB18:E18の範囲に収まるのですか?
>セルの結合は有りますか?
>コピーするのは数式ですか?
>セルの色は、罫線は?文字サイズは?
>
a2:d2から以下のデータを(xldownで範囲指定しようと思ってます)
B18:E18以下にすべて貼り付けで。
罫線は罫線と書式をつけるマクロは作っておいてあるので、
罫線などはつけません。

>そんなことはさておき、
>セルのコピーをマクロで出来ますか?
はい。

>Excelファイルを開けますか?

Dir関数を使うのでしょうと分かっているのですが
Dir関数を過去ログや、他のHPで調べてみたのですが
やりたいことにつなげられていません。
helpはインストールされていないです。

>閉じれますか?
はい。

【23052】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/11(金) 14:16 -

引用なし
パスワード
   ▼MIKA さん:
>>2行目以下のデータとは、どうゆうことですか?
>>A2:VI2にデータがあるのですか?
>>A2:A65536にデータがあるのですか?
>>セルの範囲はB18:E18の範囲に収まるのですか?
>>セルの結合は有りますか?
>>コピーするのは数式ですか?
>>セルの色は、罫線は?文字サイズは?

コピーと 閉じることが出来るということで、
後はファイルを開くことが出来れば、それを組み合わせて、目的が達成できそうですね。

ファイルを開くのは
Fn に開きたいファイルのフルパスが入っているとして、

Workbooks.Open FileName:= Fn

で開くことが出来ます。
私のコードですと、

Workbooks.Open FileName:=myFolderA & Application.Pathseparetor & FnA
Workbooks.Open FileName:=myFolderB & Application.Pathseparetor & FnB

で、開くことが出来ます。
開いたら、
Workbooks(FnA).Worksheets(〜〜).Range(〜〜).Copy
等で、コピーをして、
Workbooks(〜〜).Save
で保存して、
Workbooks(〜〜).Close
といったところでしょうか?

【23053】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/11(金) 14:20 -

引用なし
パスワード
   >コピーと 閉じることが出来るということで、
>後はファイルを開くことが出来れば、それを組み合わせて、目的が達成できそうですね。
>
一番の目的は
最初に書いた
そのファイルを開くには条件が
あって、
たとえば、AとBのフォルダにそれぞれ
A:
☆☆日付.xls
▼▼日付.xls
○○○日付.xls
・・・
50ファイルほど


B:
☆☆ABC.xls
▼▼ABC.xls
○○○ABC.xls
・・・
50ファイルほど

というファイルが入っていて
☆☆、▼▼、○○○・・・・が一致するファイル同士で先ほどのコピーをさせたいのです。


>ファイルを開くのは
>Fn に開きたいファイルのフルパスが入っているとして、
>
>Workbooks.Open FileName:= Fn
>
>で開くことが出来ます。
>私のコードですと、
>
>Workbooks.Open FileName:=myFolderA & Application.Pathseparetor & FnA
>Workbooks.Open FileName:=myFolderB & Application.Pathseparetor & FnB
>
>で、開くことが出来ます。
>開いたら、
>Workbooks(FnA).Range(〜〜).Copy
>等で、コピーをして、
>Workbooks(〜〜).Save
>で保存して、
>Workbooks(〜〜).Close
>といったところでしょうか?

ありがとうございます。
↑と、

前の前のトピに他の方に(IROC?さん)回答いただいた↓と
50個ほどあるので、
ファイルをカウントさせて、For 〜 NEXTで
ループさせて使えばいいのでしょうかね?
(それらを組み合わせられるからが自信がないのですが・・。
ひとつひとつの要素は分かるのですが、
文章・・プログラムとしていくことがなかなか上手くできなくて)


Dim myKey As String
Dim myFile As String

 myKey = Left("★★200501.xls" , 2)
 myFile = "ABC★★.xls"

 If Instr(myFile, myKey) <> "" Then
   MsgBox "該当するファイルです"
 Else
   MsgBox "該当しません"
 End If

【23056】Re:違うフォルダのファイル名の一部が同...
回答  G-Luck  - 05/3/11(金) 16:21 -

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

二つ示します。
一つは最低限のコード
もう一つは、出来るだけ配慮をしたコードです。

1を使う場合は、
myFolderA
myFolderB
にそれぞれ、対象のフォルダのパスを入力してください。

Public Sub myFileCopy1()
  
  Const myFileNameA As String = "*200501.xls"
  Const myFileNameB As String = "ABC*.xls"
  Const myFolderA  As String = "フォルダのパスを入力してください"
  Const myFolderB  As String = "フォルダのパスを入力してください"
  Dim FnA     As String
  Dim FnB     As String
  Dim KENMEI   As String
  Dim i      As Long
  Dim iFn     As Variant
  Dim N      As Long
  Dim buf     As Variant
  
  '対象ファイルのサーチする。
  '結果は、.FoundFiles に格納されている
  With Application.FileSearch
    .LookIn = myFolderA     '対象フォルダ
    .SearchSubFolders = False  'サブフォルダの内部も探すかどうか
    .Filename = myFileNameA'検索ファイル名、ワイルドカード指定している
    .Execute          '実行
  End With
  
  'データコピー本文
  For i = 1 To Application.FileSearch.FoundFiles.Count
    'iFn にはフルパスが入っている。
    iFn = Application.FileSearch.FoundFiles(i)
    'ファイル名の取得
    FnA = Dir(iFn) 'ファイル検索して存在するなら、ファイル名を返す。
    KENMEI = Left(FnA, Len(FnA) - 10)
     '県名の部分を取得。Left(文字列、左から何文字)、文字数Len(文字列)
    FnB = WorksheetFunction.Substitute(myFileNameB, "*", KENMEI)
     '*をKENMEIに変更
    FnB = Dir(myFolderB & Application.PathSeparator & FnB)
    
    'ファイルを開く
    Workbooks.Open _
      Filename:=myFolderA & Application.PathSeparator & FnA
    Workbooks.Open _
      Filename:=myFolderB & Application.PathSeparator & FnB
    
    'データ数を取得
    With Workbooks(FnA).Worksheets(1)
      N = .Range("A2").End(xlDown).Row - .Range("A2").Row + 1
    End With
    
    'データコピー
    Workbooks(FnA).Worksheets(1).Range("A2:D2").Resize(N).Copy
     'コピー
    Workbooks(FnB).Worksheets(1).Range("B18").PasteSpecial
     '貼り付け

    'ファイルを閉じる
    Workbooks(FnA).Close SaveChanges:=False
     '変更があっても保存せず閉じる
    Workbooks(FnB).Close SaveChanges:=True
     '変更があった場合保存して閉じる
    
  Next iFn
End Sub


Public Sub myFileCopy2()
  
  Const myFileNameA As String = "*200501.xls"
  Const myFileNameB As String = "ABC*.xls"
  Const myMessage1 As String = _
   "フォルダが選択されていません。" & vbCrLf & _
   "中止します。"
  Const myMessage2 As String = "のデータが多すぎてコピーできません。"
  Const myMessage3 As String = "データのコピーが終了しました。"
  Dim ret     As Long
  Dim myFolderA  As String
  Dim myFolderB  As String
  Dim FnA     As String
  Dim FnB     As String
  Dim KENMEI   As String
  Dim i      As Long
  Dim iFn     As Variant
  Dim N      As Long
  Dim buf     As Variant

  'フォルダ選択
  With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False            '複数選択
    .Title = "データフォルダを選択してください。" 'ダイアログタイトル
    .ButtonName = "選択"            '実行ボタンキャプション
    ret = .Show                'ダイアログを表示
    If ret = 0 Then     'キャンセルの場合 返り値が 0、以外は -1
      MsgBox myMessage1
      Exit Sub
    End If
    myFolderA = .SelectedItems(1)'複数選択不可なので、1にしか値が無い
  End With
  With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Title = "出力フォルダを選択してください。"
    .ButtonName = "選択"
    ret = .Show
    If ret = 0 Then
      MsgBox myMessage1
      Exit Sub
    End If
    myFolderB = .SelectedItems(1)
  End With
  
  '対象ファイルのサーチする。
  '結果は、.FoundFiles に格納されている
  With Application.FileSearch
    .LookIn = myFolderA     '対象フォルダ
    .SearchSubFolders = False  'サブフォルダの内部も探すかどうか
    .Filename = myFileNameA'検索ファイル名、ワイルドカード指定している
    .Execute          '実行
  End With
  
  Application.ScreenUpdating = False '表示の更新を停止
  
  'データコピー本文
  For i = 1 To Application.FileSearch.FoundFiles.Count
    'iFn にはフルパスが入っている。
    iFn = Application.FileSearch.FoundFiles(i)
    'ファイル名の取得
    FnA = Dir(iFn)     'ファイルが存在するなら、ファイル名を返す。
    KENMEI = Left(FnA, Len(FnA) - 10)
     '県名の部分を取得。Left(文字列、左から何文字)、文字数Len(文字列)
    FnB = WorksheetFunction.Substitute(myFileNameB, "*", KENMEI)
     '*をKENMEIに変更
    FnB = Dir(myFolderB & Application.PathSeparator & FnB)

    'ファイルBが存在するなら下記処理。無ければ処理を跳ばす。
    If FnB <> "" Then
      'ファイルを開く
      'すでに同名ファイルが開いている場合は、開かない。
      On Error Resume Next  'エラーが出ても処理を続ける
        Set buf = Workbooks(FnA)  '存在しない場合、エラーが出る。
        If Err <> 0 Then
          Workbooks.Open _
           Filename:=myFolderA & Application.PathSeparator & FnA
          Workbooks(FnA).IsAddin = False
        End If
        Err.Clear
        Set buf = Workbooks(FnB)
        If Err <> 0 Then
          Workbooks.Open _
           Filename:=myFolderB & Application.PathSeparator & FnB
          Workbooks(FnB).IsAddin = False
        End If
      On Error GoTo 0   'エラーが出たら処理を止める
      
      'データ数を取得
      N = 0
      With Workbooks(FnA).Worksheets(1).Range("A2")  '
        If .Value <> "" Then
          If .Offset(1, 0).Value <> "" Then
            N = .End(xlDown).Row - .Row + 1
          Else
            N = 1
          End If
        End If
      End With
      
      'データコピー
      If 1 < N Then  'データが存在しない場合はコピーを実行しない。
         'データが多すぎる場合は警告を出す。
        If 65536 - 18 + 1 < N Then
          MsgBox FnA & myMessage2
        Else
          Workbooks(FnA).Worksheets(1). _
            Range("A2:D2").Resize(N).Copy 'コピー
          Workbooks(FnB).Worksheets(1). _
            Range("B18").PasteSpecial  '貼り付け
        End If
      End If

      'ファイルを閉じる
      Workbooks(FnA).Close SaveChanges:=False
       '変更があっても保存せず閉じる
      With Workbooks(FnB)
        .IsAddin = True
        .Close SaveChanges:=True
          '変更があった場合保存して閉じる
      End With
    End If
  Next i
  
  Application.ScreenUpdating = True
  
  MsgBox myMessage3
End Sub

【23060】Re:違うフォルダのファイル名の一部が同...
お礼  MIKA  - 05/3/11(金) 17:16 -

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

試してみます。

今日は急なオーダーが入ってしまい
これにとりかかれないもので
また月曜日に。

2つも丁寧に書いていただき、感謝いたします。

【23115】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/14(月) 10:27 -

引用なし
パスワード
   G-Luck さん
ありがとうございました。

>1を使う場合は、
>myFolderA
>myFolderB
>にそれぞれ、対象のフォルダのパスを入力してください。
>
1を使ってみました。
対象フォルダも指定したのですが↓
何故か、myFolderBが見つかりませんとなります。
myFolderAはちゃんとファイルが開いてるのですが・・・。

  Const myFolderA  As String = "C:\開示"
  Const myFolderB  As String = "C:\元データ"

【23128】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/14(月) 14:26 -

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

1では、ファイルの存在チェックはしていません。
ファイル、フォルダが確実に存在する状態で使用してください。
隠しファイルも探していません。

また、Dir関数では、特殊な場合ファイル名を取得できないようです。
ファイル名が長いとか、Uniコードを使うとか・・・

【23166】Re:違うフォルダのファイル名の一部が同...
質問  MIKA  - 05/3/15(火) 13:50 -

引用なし
パスワード
   フォルダBのファイルを読み取って
ちゃんとコピーでききました。
ありがとうございます。

(FnB = Dir(myFolderB & Application.PathSeparator & FnB)という一文を
抜き取ったら)


しかし、
閉じるときにfalseにしてあるのに

クリップボードに大きな情報がありますってメッセージがでるのですが
これを出ないようにするのはどうしたら良いのでしょうか?

【23170】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/15(火) 14:56 -

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

>(FnB = Dir(myFolderB & Application.PathSeparator & FnB)という一文を
>抜き取ったら)

参考までに、対象フォルダ・ファイルは隠しフォルダ・ファイルですか?

>しかし、
>閉じるときにfalseにしてあるのに
>
>クリップボードに大きな情報がありますってメッセージがでるのですが
>これを出ないようにするのはどうしたら良いのでしょうか?

クリップボードと、保存するかどうか別なのでしょう。
下記一文で、コピーモードを解除します。

  Application.CutCopyMode = False

独り言・う〜、まだまだ、配慮不足だな〜

【23172】Re:違うフォルダのファイル名の一部が同...
お礼  MIKA  - 05/3/15(火) 15:22 -

引用なし
パスワード
   >参考までに、対象フォルダ・ファイルは隠しフォルダ・ファイルですか?
>

いいえ。隠しファイルでも隠しフォルダでもないですよ。


>クリップボードと、保存するかどうか別なのでしょう。
>下記一文で、コピーモードを解除します。
>
>  Application.CutCopyMode = False
>

上のを入れたら、見事にすんなりできました。

今までの手間を考えたら、感激です。


>独り言・う〜、まだまだ、配慮不足だな〜

いえいえ。何度も対応いただいて、
配慮のカタマリな方だと思います。
本当にありがとうございます。

勉強になりましたし、まだまだ勉強しないとと実感できました。

【23173】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/15(火) 15:28 -

引用なし
パスワード
   ▼MIKA さん:
>>参考までに、対象フォルダ・ファイルは隠しフォルダ・ファイルですか?
>>
>
>いいえ。隠しファイルでも隠しフォルダでもないですよ。

それじゃ、なんで、ファイル名が取得できないんだろう?
これがいわゆる、Dirの問題?

【23174】Re:違うフォルダのファイル名の一部が同...
発言  MIKA  - 05/3/15(火) 15:32 -

引用なし
パスワード
   >それじゃ、なんで、ファイル名が取得できないんだろう?
>これがいわゆる、Dirの問題?

あの一文を抜いたら、ファイル名を取得してくれました・・・。
バグのようなものなのですか?

【23176】Re:違うフォルダのファイル名の一部が同...
発言  G-Luck  - 05/3/15(火) 15:58 -

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

 FnB = Dir(myFolderB & Application.PathSeparator & FnB)

 今回の場合、 私の認識では、Dir は、指定したファイルが存在すれば、ファイル名を取得する、です。(引数を設定することによって、フォルダ名を取得とか、隠しファイルを取得とかありますが)

その前のコードで

FnB = WorksheetFunction.Substitute(myFileNameB, "*", KENMEI)

これで、対象となるファイル名を設定しています。
これが、ほんとに対象フォルダにあるか?を確認しているつもりです。
2の方では、
If FnB <> "" Then
として、ファイル名が取得できない、つまり、ファイルが存在しない場合は処理を跳ばすということをしています。

ですから、今回の場合は、
ファイルは存在する(開くことが出来ることから)けど、Dirでファイル名を取得できない、となってしまい、私の認識とは違った結果が出てしまっています。

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