Excel VBA質問箱 IV

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

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


7741 / 13644 ツリー ←次へ | 前へ→

【37131】ファイルを開いて、あるシートをアクティブにする maki 06/4/22(土) 23:47 質問[未読]
【37132】Re:ファイルを開いて、あるシートをアクテ... かみちゃん 06/4/22(土) 23:59 発言[未読]
【37133】Re:ファイルを開いて、あるシートをアクテ... maki 06/4/23(日) 1:27 発言[未読]
【37134】Re:ファイルを開いて、あるシートをアクテ... かみちゃん 06/4/23(日) 1:39 発言[未読]
【37136】Re:ファイルを開いて、あるシートをアクテ... maki 06/4/23(日) 2:36 発言[未読]
【37140】Re:ファイルを開いて、あるシートをアクテ... Kein 06/4/23(日) 13:17 回答[未読]

【37131】ファイルを開いて、あるシートをアクティ...
質問  maki  - 06/4/22(土) 23:47 -

引用なし
パスワード
   はじめまして!

どなたか以下のことを教えていただけませんか??

1.最初にマクロを実行したときに
どのファイルでも選べれるように、
マイドキュメントのウインドを開く。

2.選んだエクセルファイルを開くと
そのブックの中の”明細”と言う文字が含まれたシートをマクロで探し出して
アクティブにする(何枚かある場合は、番号の若いシートから)

3.最後に、何枚かコピーしたファイルの一覧を
”コピー元の名前とコピーして変更した名前”を
対応させたテキストファイルを、作りたい

【37132】Re:ファイルを開いて、あるシートをアク...
発言  かみちゃん  - 06/4/22(土) 23:59 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1.最初にマクロを実行したときに
>どのファイルでも選べれるように、
>マイドキュメントのウインドを開く。

GetOpenFilename メソッド
をまずはヘルプや過去ログで調べてみてください。

>2.選んだエクセルファイルを開くと
>そのブックの中の”明細”と言う文字が含まれたシートをマクロで探し出して
>アクティブにする(何枚かある場合は、番号の若いシートから)

こんな感じでしょうか。
Sub test()
 Dim ws As Worksheet
 For Each ws In Worksheets
  If InStr(ws.Name, "明細") <> 0 Then
   ws.Activate
   Exit For
  End If
 Next
 MsgBox ws.Name & "をアクティブにしました。"
End Sub

>3.最後に、何枚かコピーしたファイルの一覧を
>”コピー元の名前とコピーして変更した名前”を
>対応させたテキストファイルを、作りたい

意味がわからないので、再度具体的に説明していただけませんか?

【37133】Re:ファイルを開いて、あるシートをアク...
発言  maki  - 06/4/23(日) 1:27 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます、かみちゃんさん^^
>
>>1.最初にマクロを実行したときに
>>どのファイルでも選べれるように、
>>マイドキュメントのウインドを開く。
>
>GetOpenFilename メソッド
>をまずはヘルプや過去ログで調べてみてください。
わかりました!調べてみてわからないときには
うかがいますね!

>
>>2.選んだエクセルファイルを開くと
>>そのブックの中の”明細”と言う文字が含まれたシートをマクロで探し出して
>>アクティブにする(何枚かある場合は、番号の若いシートから)
>
>こんな感じでしょうか。
>Sub test()
> Dim ws As Worksheet
> For Each ws In Worksheets
>  If InStr(ws.Name, "明細") <> 0 Then
>   ws.Activate
>   Exit For
>  End If
> Next
> MsgBox ws.Name & "をアクティブにしました。"
>End Sub
>
ちなみに、エクセルファイルをドキュメントから選択すると
同時に、2.のマクロを実行させることはできますか??

>>3.最後に、何枚かコピーしたファイルの一覧を
>>”コピー元の名前とコピーして変更した名前”を
>>対応させたテキストファイルを、作りたい
>
>意味がわからないので、再度具体的に説明していただけませんか?

わかりました!
あるセルの値と同じ名前の図面ファイルがCドライブ、又は
ネットワーク経由のフォルダにあります。

その値と同じファイル名のファイルを検索して
コピーして、名前を変えて新しいフォルダにはりつけます。

”そしてその結果を、テキストファイルに
「元のファイル名→新しいファイル名」
といった感じで、貼り付けたフォルダに残したいのです”

3.の内容はこんな意味でした。
ほんと初心者なんで、申し訳ないです・・・・
よろしくお願いいたします。

【37134】Re:ファイルを開いて、あるシートをアク...
発言  かみちゃん  - 06/4/23(日) 1:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>>2.選んだエクセルファイルを開くと
>>>そのブックの中の”明細”と言う文字が含まれたシートをマクロで探し出して
>>>アクティブにする(何枚かある場合は、番号の若いシートから)
>>
>>こんな感じでしょうか。
>>Sub test()
>> Dim ws As Worksheet
>> For Each ws In Worksheets
>>  If InStr(ws.Name, "明細") <> 0 Then
>>   ws.Activate
>>   Exit For
>>  End If
>> Next
>> MsgBox ws.Name & "をアクティブにしました。"
>>End Sub
>>
>ちなみに、エクセルファイルをドキュメントから選択すると
>同時に、2.のマクロを実行させることはできますか??

TghisWorkbookモジュールのWorkbook_Openイベントに記述するか、
標準モジュールの中にAuto_Openというマクロを作っておくかの2種類の方法があります。
http://www.happy2-island.com/excelsmile/smile03/capter00706.shtml

>>>3.最後に、何枚かコピーしたファイルの一覧を
>>>”コピー元の名前とコピーして変更した名前”を
>>>対応させたテキストファイルを、作りたい
>>
>>意味がわからないので、再度具体的に説明していただけませんか?
>
>わかりました!
>あるセルの値と同じ名前の図面ファイルがCドライブ、又は
>ネットワーク経由のフォルダにあります。
>
>その値と同じファイル名のファイルを検索して
>コピーして、名前を変えて新しいフォルダにはりつけます。

単純に指定したファイルをコピーしたいだけならば、
FileCopyステートメントをヘルプで調べてみてください。

>”そしてその結果を、テキストファイルに
>「元のファイル名→新しいファイル名」
>といった感じで、貼り付けたフォルダに残したいのです”

「その結果」とは何ですか?
コピーした結果(正常にコピーできたかどうかとか?)ですか?

【37136】Re:ファイルを開いて、あるシートをアク...
発言  maki  - 06/4/23(日) 2:36 -

引用なし
パスワード
   こんばんは、makiです。
かみちゃんさん、ありがとうございます!

>>”そしてその結果を、テキストファイルに
>>「元のファイル名→新しいファイル名」
>>といった感じで、貼り付けたフォルダに残したいのです”
>
>「その結果」とは何ですか?
>コピーした結果(正常にコピーできたかどうかとか?)ですか?

そうです。コピー出来た結果を
ファイル数だけテキストファイルに
上記のように出力したいです。

【37140】Re:ファイルを開いて、あるシートをアク...
回答  Kein  - 06/4/23(日) 13:17 -

引用なし
パスワード
   >あるセルの値と同じ名前の図面ファイルがCドライブ、又は
>ネットワーク経由のフォルダにあります。
>その値と同じファイル名のファイルを検索して
>コピーして、名前を変えて新しいフォルダにはりつけます。
>”そしてその結果を、テキストファイルに
>「元のファイル名→新しいファイル名」
>といった感じで、貼り付けたフォルダに残したいのです”

1 検索するファイル名は、マクロ実行ブックのSheet1のA2以下に入力されている。
2 ネットワーク上のフォルダーのパスは、定数 CpFol で宣言。
3 コピー先フォルダーは、通常ブックを保存しているフォルダー
4 コピー後のファイル名は、元のファイル名の先頭に番号を付ける。
5 コピーしたファイルのリストを書いたテキストは、CpyLog.txt とする。

Sub MyFile_Copy()
  Dim i As Long
  Dim MyR As Range, C As Range
  Dim PsFol As String, MyF As String
  Dim Mylog As String, NewF As String
  Const CpFol As String = _
  "\\Computername\c\My Documents\"
  '↑実際の保存先フォルダーのパスに変更する

  PsFol = Application.DefaultFilePath & "\"
  Mylog = PsFol & "CpyLog_" & Format(Date, "yymmdd") & ".txt"
  With Worksheets("Sheet1")
   If .Range("A65536").End(xlUp).Row = 1 Then
     MsgBox "ブック名の入力がありません", 48: Exit Sub
   End If
   Set MyR = .Range("A2", .Range("A65536").End(xlUp))
  End With
  If Dir(Mylog) <> "" Then Kill Mylog
  Open Mylog For Output Access Write As #1
  For Each C In MyR
   If LCase(Right$(C.Value, 4)) <> ".xls" Then GoTo NLine
   MyF = "C:\" & C.Value
   If Dir(MyF) = "" Then
     MyF = CpFol & C.Value
     If Dir(MyF) = "" Then
      Print #1, C.Value & " : NotFound"
      GoTo NLine
     End If
   End If
   i = i + 1
   NewF = Left$(C.Value, Len(C.Value) - 4) & "_" & i & ".xls"
   FileCopy MyF, PsFol & NewF
   Print #1, C.Value & " : " & NewF
NLine:
  Next
  Close #1: Set MyR = Nothing
  MsgBox "ファイルコピーとログの作成を終了", 64
End Sub

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