Excel VBA質問箱 IV

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

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


14706 / 76734 ←次へ | 前へ→

【67517】Re:MsgBoxで指定したブックのデータをコピーしたい
発言  kanabun  - 10/12/9(木) 23:30 -

引用なし
パスワード
   ▼すず さん:
こんばんは〜

>そして、新たに問題が2点出てきてしまいました。
>
>●問題点1
>こちらで質問させていただいた日報のブック名を確認
>したところ、日付の部分が単純に「101206」のようなyymmdd形式になって
>いるものと、「2010-12-06」のように「-」で区切られている2パターンがありました。

>●問題点2
>日報が保存されているフォルダが2つありました。
>たとえば、フォルダAには「101206」のつく日報があり、フォルダBには「2010-12-06」のつく日報があるという具合になります。
>その場合、mypathの部分をどのように変更すればよろしいでしょうか

まず
>●問題点2
のために、myPathに セミコロン(;)で区切って複数のパス名を
記入するように 変更してみてください。
                 ↓
 myPath = "\\サーバ名\フォルダ名\;\\サーバ名\フォルダ名2\" '◆要変更

>●問題点1
については、InputBoxでの入力は これまでどおり yymmdd 形式で
入れておいてください。たとえば 「101120」と入力しますと、
プログラムのほうで、
*101120*.xls

*2010-11-20*.xls
と2種類の検索ファイル名を作成します。

で、プログラム内で これらを組み合わせて 計4種類の検索パターンを
作成し、これをDIRコマンドのパラメータにしています。
こんな風にです↓

DIR "\\サーバ名\フォルダ名\*101120*.xls" _
   "\\サーバ名\フォルダ名\*2010-11-20*.xls" _
   "\\サーバ名\フォルダ名2\*101120*.xls" _
   "\\サーバ名\フォルダ名2\*2010-11-20*.xls" _
   /b/s > "C:\Users\kanabun\AppData\Local\Temp\Dir.tmp"


上記変更点について修正したものを以下に示しますので、
新規モジュールに 下記をコピペしてテストしてみてください。
'---------------------------------------------- 標準モジュール2
Option Explicit
Sub ファイル取得ボタン_Click()
 Dim myPath As String
  myPath = "\\サーバ名\フォルダ名\;\\サーバ名\フォルダ名2\" '◆要変更
 Dim Filename As String
 Dim i As Long
 Dim FoundFiles() As String

 Filename = InputBox$("yymmdd形式でファイル名を指定", "ファイルの取得")
 If StrPtr(Filename) = 0& Then Exit Sub
 If Not (Filename Like "######") Then Exit Sub
 
 Filename = "*" & Filename & "*.xls;*20" _
      & Format$(Filename, "##-##-##") & "*.xls"
 
 ''検索パスとファイルパターンを指定してファイル検索
 FoundFiles = GetFile(myPath, Filename)

 If UBound(FoundFiles) < 0 Then
   MsgBox "該当ファイルが見つかりません"
   Exit Sub
 End If
 
 Dim WB0 As Workbook
  Set WB0 = Workbooks("コピー先Book.xls")'あらかじめ開いておく◆要変更
 Dim WB As Workbook
 Dim ws As Worksheet
 '--- ↓確認用
 For i = 0 To UBound(FoundFiles) - 1
   Debug.Print FoundFiles(i)
 Next
 '--- Open抽出 実行
 For i = 0 To UBound(FoundFiles) - 1
   Set WB = Workbooks.Open(FoundFiles(i))
   For Each ws In WB.Worksheets
     Select Case ws.Name
      Case "東京", "大阪", "名古屋"
        このシートより転記 ws, WB0
     End Select
   Next
   WB.Close False
   Set WB = Nothing
 Next
 Set WB0 = Nothing
 MsgBox "転記終了!"
End Sub

Private Sub このシートより転記( _
            ByVal ws As Worksheet, _
            ByVal WB0 As Workbook)
 Dim ws0 As Worksheet
  Set ws0 = WB0.Worksheets(ws.Name)
 Dim r As Range
 With ws
  Set r = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
  Set r = r.Resize(r.Rows.Count - 1, 3)
 End With
 r.Copy ws0.Range("D1")
  
End Sub

'サブフォルダを含むファイルの検索(ファイルリストを返す)
Private Function GetFile(myPath As String, _
            Filename As String) As String()
  Dim myPaths, Filenames
  Dim tmpPath As String
  Dim sCmd As String
  Dim i&, j&, ko As Long
 
  tmpPath = Environ$("Temp") & "\Dir.tmp"
  
  myPaths = Split(myPath, ";")
  Filenames = Split(Filename, ";")
  For i = 0 To UBound(myPaths)
    If Right$(myPaths(i), 1) <> "\" Then
      myPaths(i) = myPaths(i) & "\"
    End If
    For j = 0 To UBound(Filenames)
     sCmd = sCmd & " """ & myPaths(i) & Filenames(j) & """ "
    Next
  Next
  sCmd = "DIR " & sCmd & "/b/s > """ & tmpPath & """"
  'Debug.Print sCmd
  With CreateObject("WScript.Shell")
    ko = .Run("CMD /C " & sCmd, 7, True) 'Dirコマンド実行
  End With

  Dim io As Integer
  Dim buf() As Byte
  io = FreeFile()
  Open tmpPath For Binary As io '出力ファイルリスト取得
   ReDim buf(1 To LOF(io))
   Get #io, , buf
  Close io
  Kill tmpPath
  GetFile = Split(StrConv(buf, vbUnicode), vbCrLf)
End Function

0 hits

【67465】MsgBoxで指定したブックのデータをコピーしたい すず 10/12/7(火) 0:14 発言
【67467】Re:MsgBoxで指定したブックのデータをコピ... kanabun 10/12/7(火) 10:28 発言
【67469】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/7(火) 21:52 お礼
【67468】Re:MsgBoxで指定したブックのデータをコピ... kanabun 10/12/7(火) 13:16 発言
【67470】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/8(水) 0:44 質問
【67471】Re:MsgBoxで指定したブックのデータをコピ... りん 10/12/8(水) 4:11 発言
【67481】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/8(水) 21:21 お礼
【67482】Re:MsgBoxで指定したブックのデータをコピ... kanabun 10/12/8(水) 22:21 発言
【67516】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/9(木) 22:28 質問
【67517】Re:MsgBoxで指定したブックのデータをコピ... kanabun 10/12/9(木) 23:30 発言
【67529】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/10(金) 22:49 お礼
【67672】Re:MsgBoxで指定したブックのデータをコピ... すず 10/12/22(水) 21:54 質問

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