Excel VBA質問箱 IV

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

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


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

【45528】年度情報を集約ファイルに書き込むには? vang 06/12/29(金) 14:42 質問[未読]
【45532】Re:年度情報を集約ファイルに書き込むには? かみちゃん 06/12/29(金) 17:24 発言[未読]
【45533】Re:年度情報を集約ファイルに書き込むには? vang 06/12/29(金) 19:14 質問[未読]
【45535】Re:年度情報を集約ファイルに書き込むには? かみちゃん 06/12/29(金) 21:26 発言[未読]
【45538】Re:年度情報を集約ファイルに書き込むには? vang 06/12/30(土) 15:27 発言[未読]
【45539】Re:年度情報を集約ファイルに書き込むには? かみちゃん 06/12/30(土) 17:56 発言[未読]
【45553】Re:年度情報を集約ファイルに書き込むには? vang 06/12/31(日) 20:55 発言[未読]
【45558】Re:年度情報を集約ファイルに書き込むには? かみちゃん 06/12/31(日) 22:10 発言[未読]
【45625】Re:年度情報を集約ファイルに書き込むには? vang 07/1/7(日) 11:46 発言[未読]
【45626】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/7(日) 11:59 発言[未読]
【45627】Re:年度情報を集約ファイルに書き込むには? vang 07/1/7(日) 12:49 発言[未読]
【45628】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/7(日) 13:17 発言[未読]
【45629】Re:年度情報を集約ファイルに書き込むには? vang 07/1/7(日) 13:33 発言[未読]
【45630】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/7(日) 18:34 発言[未読]
【45636】Re:年度情報を集約ファイルに書き込むには? vang 07/1/8(月) 8:53 発言[未読]
【45638】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/8(月) 11:20 発言[未読]
【45640】Re:年度情報を集約ファイルに書き込むには? vang 07/1/8(月) 13:25 発言[未読]
【45641】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/8(月) 13:51 発言[未読]
【45644】Re:年度情報を集約ファイルに書き込むには? vang 07/1/8(月) 14:33 発言[未読]
【45646】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/8(月) 14:55 発言[未読]
【45649】Re:年度情報を集約ファイルに書き込むには? vang 07/1/8(月) 15:39 発言[未読]
【45650】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/8(月) 18:48 発言[未読]
【45652】Re:年度情報を集約ファイルに書き込むには? vang 07/1/8(月) 19:16 発言[未読]
【45653】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/8(月) 19:34 発言[未読]
【45654】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 9:55 発言[未読]
【45655】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 10:11 発言[未読]
【45657】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 11:44 発言[未読]
【45658】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 12:16 発言[未読]
【45660】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 13:07 発言[未読]
【45661】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 13:36 発言[未読]
【45663】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 14:28 発言[未読]
【45664】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 14:40 発言[未読]
【45665】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 14:56 発言[未読]
【45666】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 15:20 発言[未読]
【45667】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 15:34 発言[未読]
【45668】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 16:38 発言[未読]
【45669】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 16:47 お礼[未読]
【45670】Re:年度情報を集約ファイルに書き込むには? かみちゃん 07/1/9(火) 16:57 発言[未読]
【45672】Re:年度情報を集約ファイルに書き込むには? vang 07/1/9(火) 18:26 お礼[未読]

【45528】年度情報を集約ファイルに書き込むには?
質問  vang  - 06/12/29(金) 14:42 -

引用なし
パスワード
   お世話になります。
皆様にご指導頂きたいと思い書かせていただきます。

ファイルの中に各店所のシートがあります。
このファイルは年度事に作成しその年度にあった情報を書き込んでいます。
そのファイルに書き込んだ情報を集約している別ファイルに読み込みたいのですが、
その方法が分かりません。(H16年からの集約表)
今は手書きで書き込んでいるので2度手間になっています。

分からないなりに考えてみたのですがうまくいきません。

Sub 情報集約()
Application.ScreenUpdating = False
    
F = "C:\H18店所情報.xls"
  Workbooks.Open Filename:=F
  
  F_1 = "H18店所情報.xls"
  F_2 = "集約表.xls"
  G_1 = "平成" '店所名
  X = 2
  
  Do Until Sheets(G_1).Range("C" & X) = Sheets(G_1).Range("B" & X)
  X = X + 1
  Loop
  Windows(F_2).Activate
  Workbooks(F_1).Sheets(G_1).Range("C" & X).Copy
   'H18店所情報のC〜Eをコピーし集約表の入力のあった次の行に書き込みたい。
  
Range("B" & X).PasteSpecial Paste:=xlValues, Transpose:=True
   Workbooks(F_1).Close

End Sub

なかなか書いて説明するのは難しいのですが、どなかたご指導お願いします。

【45532】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 06/12/29(金) 17:24 -

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

>ファイルの中に各店所のシートがあります。
>このファイルは年度事に作成しその年度にあった情報を書き込んでいます。
>そのファイルに書き込んだ情報を集約している別ファイルに読み込みたい

各店所別シートのイメージ

集約シートのイメージ
をサンプルのデータでいいので、示していただくことはできませんか?

  A  B  C  D  E  F
1
2
3
4

※シートイメージを投稿の際には、内容欄右下の「等幅」にチェックをつけてください。

【45533】Re:年度情報を集約ファイルに書き込むに...
質問  vang  - 06/12/29(金) 19:14 -

引用なし
パスワード
   かみちゃん様
返信ありがとうござます。
今回もお力をお貸し下さい。
イメージですが・・・。
(H18店所情報.xls)
  A  B  C  D  E  F
1   
2   (2行目までは題字や枠組みなど)
3    ○  ▲  ■  ×  (3行目より入力開始)
4    あ  い  う  え 
5    か  き  く  け 
6

   ↓ 集約表のボタンを押す。

(集約表.xls)
  A  B  C  D  E  F
1   (1行目は題字や枠組みなど)
2  (2行目より入力(集約)が始まっています。)
3   
4    (過去の情報が入っています)
5
6    ○  ▲  ■  × 
7    あ  い  う  え 
8    か  き  く  け 
9

このようなイメージです。
H18年店所情報に入力し、集約表のコマンドボタンで情報を取り込めたらなと
思っています。
例ですが新しく店所情報の6行目に書いたものは、
集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
そうすれば今まで両方入力していた二度手間が省けて大変助かります。
どうでしょうか。

【45535】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 06/12/29(金) 21:26 -

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

>H18年店所情報に入力し、集約表のコマンドボタンで情報を取り込めたらなと

なさりたいことは大体わかったのですが、以下のようなコードでできると思います。
ただし、
・集約表.xls が開いていること
・C:\H18店所情報.xls があること
・C:\H18店所情報.xls に「平成」というシートがあること
・B3からB列の値が入っている最後の行までのB列〜E列を、
 集約表.xls のB6以下に貼り付けること
・値だけでなく、数式や書式情報まで貼り付けられること
という前提条件になっています。

Sub Sample()
 Dim WB1 As Workbook
 Dim WB2 As Workbook
 
 Set WB1 = Workbooks.Open("C:\H18店所情報.xls")
 Set WS1 = WB1.Worksheets("平成")
 
 With WS1
  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("B6")
 End With
 WB1.Close
End Sub

>例ですが新しく店所情報の6行目に書いたものは、
>集約表では8行目に既に入力されている事を認識してその次の行に書き込む。

この意味がよくわかりません。
追加記入されたら、最初から上書き転記ではいけないのですか?

また、C:\H18店所情報.xls に複数シートがあって、それらも同時に処理したい
ならば、少々改造が必要です。

【45538】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 06/12/30(土) 15:27 -

引用なし
パスワード
   ▼かみちゃん様
ありがとうございます。

>>例ですが新しく店所情報の6行目に書いたものは、
>>集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
>
>この意味がよくわかりません。
>追加記入されたら、最初から上書き転記ではいけないのですか?

H18年度だけであれば上書で構わないのですが、H19年度になれば新たにファイルを
作成し、それを集約表に書き込みたいのです。ですので、その切替がうまく出来るように
コードを作りこめたらいいなと言う感じです。

>また、C:\H18店所情報.xls に複数シートがあって、それらも同時に処理したい
>ならば、少々改造が必要です。

ご指摘の通りシートは12箇所もありますので、ここからどのように改造すればよいのか
御指導いただけたら嬉しいです。

【45539】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 06/12/30(土) 17:56 -

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

>>>例ですが新しく店所情報の6行目に書いたものは、
>>>集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
>>
>>この意味がよくわかりません。
>>追加記入されたら、最初から上書き転記ではいけないのですか?
>
>H18年度だけであれば上書で構わないのですが、H19年度になれば新たにファイルを
>作成し、それを集約表に書き込みたいのです。ですので、その切替がうまく出来るように
>コードを作りこめたら

転記先のデータに年度の情報が必要になると思います。
また、H19年度のデータの転記のあとにH18年度のデータの追加があって、
転記のしなおしなどがあれば、H19年度のデータも転記しなおしということで
いいですか?

>>また、C:\H18店所情報.xls に複数シートがあって、それらも同時に処理したい
>>ならば、少々改造が必要です。
>
>ご指摘の通りシートは12箇所もありますので、ここからどのように改造すればよいのか

Sub Sample1()
 Dim WB1 As Workbook
 Dim ws As Worksheet

 Set WB1 = Workbooks.Open("C:\H18店所情報.xls")
 
 For Each ws In WB1.Worksheets
  With ws
   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
    Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
  End With
 Next
 WB1.Close
End Sub

なさりたいことは、すごくわかっているつもりなのですが、どうしても、想定される
細かい疑問点が残ってしまいます。

【45553】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 06/12/31(日) 20:55 -

引用なし
パスワード
   かみちゃん様

年度末の忙しい時期に返信ありがとうございます。

>転記先のデータに年度の情報が必要になると思います。
>また、H19年度のデータの転記のあとにH18年度のデータの追加があって、
>転記のしなおしなどがあれば、H19年度のデータも転記しなおしということで
>いいですか?

H19年度になればH18年度の追加記入はないと言っていいと思います。

>Sub Sample1()
> Dim WB1 As Workbook
> Dim ws As Worksheet
>
> Set WB1 = Workbooks.Open("C:\H18店所情報.xls")
> 
> For Each ws In WB1.Worksheets
>  With ws
>   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>    Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
>  End With
> Next
> WB1.Close

このコードで試してみたいと思います。
店所のシート名がありませんがこれで集約表に店所ごとのシートから読み込めるようになるんでしょうか。

良いお年をお迎え下さい。

>End Sub
>
>なさりたいことは、すごくわかっているつもりなのですが、どうしても、想定される
>細かい疑問点が残ってしまいます。

【45558】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 06/12/31(日) 22:10 -

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

>>転記先のデータに年度の情報が必要になると思います。
>>また、H19年度のデータの転記のあとにH18年度のデータの追加があって、
>>転記のしなおしなどがあれば、H19年度のデータも転記しなおしということで
>>いいですか?
>
>H19年度になればH18年度の追加記入はないと言っていいと思います。

「言っていいと思います。」であれば、上記の制約条件には十分注意してください。

>店所のシート名がありませんがこれで集約表に店所ごとのシートから読み込めるようになるんでしょうか。

そういう疑問があるならば、以下のコードを一度試してみてください。
開いたファイルのすべてのシートのシート名を順番に表示します。

Sub Sample2()
 Dim WB1 As Workbook
 Dim ws As Worksheet

 Set WB1 = Workbooks.Open("C:\H18店所情報.xls")

 For Each ws In WB1.Worksheets
  With ws
   MsgBox .Name
'   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
'    Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
  End With
 Next
 WB1.Close
End Sub

>良いお年をお迎え下さい。

良いお年をお迎えください。

【45625】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/7(日) 11:46 -

引用なし
パスワード
   かみちゃん様
あけましておめでとうございます。
以前御指導いただいたこちらのコードを参考にさせていただきます。
ありがとうございました。
年明け早々すいませんが以下のコードでの疑問点がありますので教えてください。

Sub Sample()
> Dim WB1 As Workbook
> Dim WB2 As Workbook
> 
> Set WB1 = Workbooks.Open("C:\H18店所情報.xls")
> Set WS1 = WB1.Worksheets("平成")
> 
> With WS1
>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>   Workbooks("集約表.xls").ActiveSheet.Range("B6")
> End With
> WB1.Close
>End Sub

店所情報.xlsで何も情報がない時に集約表から取込を行うと、2行目にある題字が
取り込まれてしまうのですが、これを改善する方法はないのでしょうか。もうひとつ
すいません。H19年度にファイルを変更する場合、> With WS1
>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>   Workbooks("集約表.xls").ActiveSheet.Range("B6")

スタート位置の("B6")を変更する他ないのでしょうか。
それだと店所シートが多いため年度始めに結構な時間が必要になってしまうので
改善できることがあれば教えて下さい。
よろしくお願いします。

【45626】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/7(日) 11:59 -

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

>あけましておめでとうございます。

あけましておめでとうございます。

>店所情報.xlsで何も情報がない時に集約表から取込を行うと、2行目にある題字が
>取り込まれてしまう

あれ?要件変わりました?
提示したコードは、店所情報.xlsから集約表への出力なのですが・・・
「集約表から取込」とは「集約表へ出力」のこととは別ですか?
ヒントは、
.Cells(Rows.Count, 2).End(xlUp).Row
の値が3以下のときは、店所情報が何もないという判断になるのですが・・・

> H19年度にファイルを変更する場合、
>> With WS1
>>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>>   Workbooks("集約表.xls").ActiveSheet.Range("B6")
>
>スタート位置の("B6")を変更する他ないのでしょうか。

これもちょっと意味がわかりません。
以前、集約表シートでH18年度かH19年度かの区別が必要では?と申し上げています
ので、それがないとH19年度のデータは、H18年度に追加した形で出力することは
できないと思います。
(どこから出力したらいいかわからないため、年度の区分か必要では?)

【45627】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/7(日) 12:49 -

引用なし
パスワード
   かみちゃん様
>>あれ?要件変わりました?
>提示したコードは、店所情報.xlsから集約表への出力なのですが・・・
>「集約表から取込」とは「集約表へ出力」のこととは別ですか?
>ヒントは、
>.Cells(Rows.Count, 2).End(xlUp).Row
>の値が3以下のときは、店所情報が何もないという判断になるのですが・・・

間違えました。要件は変わっていません。
色々試してみたんですが駄目です・・・。


>> H19年度にファイルを変更する場合、
>>> With WS1
>>>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>>>   Workbooks("集約表.xls").ActiveSheet.Range("B6")
>>
>>スタート位置の("B6")を変更する他ないのでしょうか。
>
>これもちょっと意味がわかりません。
>以前、集約表シートでH18年度かH19年度かの区別が必要では?と申し上げています
>ので、それがないとH19年度のデータは、H18年度に追加した形で出力することは
>できないと思います。
>(どこから出力したらいいかわからないため、年度の区分か必要では?)

例えですが、H18年度が終わりH19年度のファイルを新しく作ります。
H18年度が終わったときB19まで行が埋まったとしてH19年度のファイルを作ったときに
新たにコードを変更して
>>> With WS1
>>>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>>>   Workbooks("集約表.xls").ActiveSheet.Range("B20")
という風に("B20")に変更しなければならないと言うことになってしまうんですよね。

説明がまだ足りていないようであればすいません。

【45628】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/7(日) 13:17 -

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

>>ヒントは、
>>.Cells(Rows.Count, 2).End(xlUp).Row
>>の値が3以下のときは、店所情報が何もないという判断になるのですが・・・
>
>色々試してみたんですが駄目です・・・。

以下のような感じでできるかと思います。
 With WS1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
    Workbooks("集約表.xls").ActiveSheet.Range("B6")
  End If
 End With

>例えですが、H18年度が終わりH19年度のファイルを新しく作ります。
>H18年度が終わったときB19まで行が埋まったとしてH19年度のファイルを作ったときに

H18年度が終わりH19年度の処理が始まるということをVBAが認識しないといけないのですが、
それはどのように判断しますか?

そのことが
>以前、集約表シートでH18年度かH19年度かの区別が必要では?と申し上げています
>ので、それがないとH19年度のデータは、H18年度に追加した形で出力することは
>できないと思います。
>(どこから出力したらいいかわからないため、年度の区分か必要では?)
ということなのですが・・・

ちなみに提示された以下のシートイメージでは、年度を判断するのは、どこでしますか?

(H18店所情報.xls)
  A  B  C  D  E  F
1   
2   (2行目までは題字や枠組みなど)
3    ○  ▲  ■  ×  (3行目より入力開始)
4    あ  い  う  え 
5    か  き  く  け 
6

マクロを実行する人間はわかっていても、Excelにそれを示さないといけませんよ。

【45629】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/7(日) 13:33 -

引用なし
パスワード
   かみちゃん様

>以下のような感じでできるかと思います。
> With WS1
>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>    Workbooks("集約表.xls").ActiveSheet.Range("B6")
>  End If
> End With

ありがとうございました。
解決しました。


>ちなみに提示された以下のシートイメージでは、年度を判断するのは、どこでしますか?
>
>(H18店所情報.xls)
>  A  B  C  D  E  F
>1   
>2   (2行目までは題字や枠組みなど)
>3    ○  ▲  ■  ×  (3行目より入力開始)
>4    あ  い  う  え 
>5    か  き  く  け 
>6

年度を判断するのはファイル名で判断させたいと思います。
集約表でH19年度になったらH19店所情報.xlsから取り込みます。
このような説明でどうでしょうか。
お手数おかけしたて申し訳ありません。
かすみちゃん様のようなVBAに詳しくなるにはどうしたらいいのでしょうか。
私も早く一人で色々なコードが作れるようになりたいです。

【45630】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/7(日) 18:34 -

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

>年度を判断するのはファイル名で判断させたいと思います。
>集約表でH19年度になったらH19店所情報.xlsから取り込みます。

「集約表でH19年度になったら」というのはどういう意味ですか?
以下のシートイメージをご提示いただいていますが、ここから、H19年度になったかどうか
はどのように判断するのですか?

(集約表.xls)
  A  B  C  D  E  F
1   (1行目は題字や枠組みなど)
2  (2行目より入力(集約)が始まっています。)
3   
4    (過去の情報が入っています)
5
6    ○  ▲  ■  × 
7    あ  い  う  え 
8    か  き  く  け 
9

【45636】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/8(月) 8:53 -

引用なし
パスワード
   かみちゃん様
おはようござます。

>「集約表でH19年度になったら」というのはどういう意味ですか?
>以下のシートイメージをご提示いただいていますが、ここから、H19年度になったかどうか
>はどのように判断するのですか?


集約表自体はH19年度になっても変わりません。
店所情報ファイルの方を新しくするので集約表の方は特にコードを変えることもなく
使えたらなと思っています。

>(集約表.xls)
>  A  B  C  D  E  F
>1   (1行目は題字や枠組みなど)
>2  (2行目より入力(集約)が始まっています。)
>3   
>4    (過去の情報が入っています)
>5
>6    ○  ▲  ■  × 
>7    あ  い  う  え 
>8    か  き  く  け 

H18年度に8行目まで埋まっていたとしたらH19年度には9行目から入力できる
ようにしたいです。コード的には
Sub Sample()
 Dim WB1 As Workbook
 Dim WB2 As Workbook
 
 Set WB1 = Workbooks.Open("C:\H18店所情報.xls")
 Set WS1 = WB1.Worksheets("平成")
 
 With WS1
  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("B6")
 End With
 WB1.Close
End Sub
を参考にしていますのでこのコードの("C:\H18店所情報.xls")
を("C:\H19店所情報.xls")に変えるだけでいいような感じであるのが
理想の形です。

【45638】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/8(月) 11:20 -

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

>「集約表でH19年度になったら」というのはどういう意味ですか?
>以下のシートイメージをご提示いただいていますが、ここから、H19年度になったかどうか
>はどのように判断するのですか?

集約表自体はH19年度になっても変わりません。
店所情報ファイルの方を新しくするので集約表の方は特にコードを変えることもなく
使えたらなと思っています。

>(集約表.xls)
>  A  B  C  D  E  F
>1   (1行目は題字や枠組みなど)
>2  (2行目より入力(集約)が始まっています。)
>3   
>4    (過去の情報が入っています)
>5
>6    ○  ▲  ■  × 
>7    あ  い  う  え 
>8    か  き  く  け 
>
> H18年度に8行目まで埋まっていたとしたらH19年度には9行目から入力できる

でも、ここなのですが、
H18年度に8行目まで埋まっていたとき、
元の「H18店所情報.xls」に追加削除のような変更があったとします。
そのときは、上記で言えば、9行目から出力するのではなく、7行目から上書きしたいですよね?
でも、「H19店所情報.xls」から転記するときは、9行目からしたいですよね?

元の「H18店所情報.xls」に追加削除はないのでしょうか?

このことについて、[45539]で、以下のようなことを申し上げています。
おわかりになりませんか?

>>>>例ですが新しく店所情報の6行目に書いたものは、
>>>>集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
>>>
>>>この意味がよくわかりません。
>>>追加記入されたら、最初から上書き転記ではいけないのですか?
>>
>>H18年度だけであれば上書で構わないのですが、H19年度になれば新たにファイルを
>>作成し、それを集約表に書き込みたいのです。ですので、その切替がうまく出来るように
>>コードを作りこめたら
>
>転記先のデータに年度の情報が必要になると思います。

【45640】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/8(月) 13:25 -

引用なし
パスワード
   かみちゃん様
こんにちは。以前教えていただいたコードを参考に現在取り組んでいるのですが
うまく行かない箇所がありましたので教えてください。


>店所情報.xlsで何も情報がない時に集約表から取込を行うと、2行目にある題字が
>取り込まれてしまうのですが、これを改善する方法はないのでしょうか。もうひとつ
>すいません。H19年度にファイルを変更する場合、> With WS1
>>  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>>   Workbooks("集約表.xls").ActiveSheet.Range("B6")

>以下のような感じでできるかと思います。
> With WS1
>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 4).Copy _
>    Workbooks("集約表.xls").ActiveSheet.Range("B6")
>  End If
> End With
>
これと同じく店所情報.xlsのH列の入力を同じように集約表.xlsのE列に取り込みたい
のですが、上記のコードを参考に

With ws1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 2).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("B2")
  End If
  End With
 
  With ws1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
  
  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("E2")
 End If
 End With
 WB1.Close
End Sub

と作ってみたのですが店所情報.xlsのH列に何も書かれていないとH列に
どうしても題字が入ってきてしまいます。
これを解決するにはどこを改善すればよいのでしょうか。

>> H18年度に8行目まで埋まっていたとしたらH19年度には9行目から入力できる
>
>でも、ここなのですが、
>H18年度に8行目まで埋まっていたとき、
>元の「H18店所情報.xls」に追加削除のような変更があったとします。
>そのときは、上記で言えば、9行目から出力するのではなく、7行目から上書きしたいですよね?
>でも、「H19店所情報.xls」から転記するときは、9行目からしたいですよね?
>元の「H18店所情報.xls」に追加削除はないのでしょうか?
>
>このことについて、[45539]で、以下のようなことを申し上げています。
>おわかりになりませんか?

「H18店所情報」をH19年度になってから変更することはありません。
お手数おかけします。すいません。

【45641】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/8(月) 13:51 -

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

>店所情報.xlsのH列に何も書かれていないとH列に
>どうしても題字が入ってきてしまいます。

[45262]で書かせていただきました、
> ヒントは、
> .Cells(Rows.Count, 2).End(xlUp).Row
> の値が3以下のときは、店所情報が何もないという判断になる
ということをご理解いただけていますか?
「店所情報が何もない」をもっと正確に申しますと、
「店所情報の対象シートのB列(2列目)のデータが何もない」
ということになります。

つまり、
>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
では、
「店所情報の対象シートのH列(8列目)の値が入っている最終行の判断がされていません。

>>> H18年度に8行目まで埋まっていたとしたらH19年度には9行目から入力できる
>>
>>でも、ここなのですが、
>>H18年度に8行目まで埋まっていたとき、
>>元の「H18店所情報.xls」に追加削除のような変更があったとします。
>>そのときは、上記で言えば、9行目から出力するのではなく、7行目から上書きしたいですよね?
>>でも、「H19店所情報.xls」から転記するときは、9行目からしたいですよね?
>>元の「H18店所情報.xls」に追加削除はないのでしょうか?
>>
>>このことについて、[45539]で、以下のようなことを申し上げています。
>>おわかりになりませんか?
>
>「H18店所情報」をH19年度になってから変更することはありません。

それは、「H18店所情報.xls」を集約表に転記してから、「H18店所情報.xls」の
データを修正することはしないということですか?
それであれば、申し訳ありませんが、[45533]でおっしゃった
> 例ですが新しく店所情報の6行目に書いたものは、
> 集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
という意味はどういう意味ですか?

【45644】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/8(月) 14:33 -

引用なし
パスワード
   ▼かみちゃん様
こんにちは。返信ありがとうございます。

>[45262]で書かせていただきました、
>> ヒントは、
>> .Cells(Rows.Count, 2).End(xlUp).Row
>> の値が3以下のときは、店所情報が何もないという判断になる
>ということをご理解いただけていますか?
>「店所情報が何もない」をもっと正確に申しますと、
>「店所情報の対象シートのB列(2列目)のデータが何もない」
>ということになります。
>
>つまり、
>>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>では、
>「店所情報の対象シートのH列(8列目)の値が入っている最終行の判断がされていません。
>

正直なところこのコードはうまく理解できていません。
ですので、どこをどう変えたらうまく動いてくれるのだろうと苦労しているところです。
最終行の判断とは?

>>「H18店所情報」をH19年度になってから変更することはありません。
>
>それは、「H18店所情報.xls」を集約表に転記してから、「H18店所情報.xls」の
>データを修正することはしないということですか?
>それであれば、申し訳ありませんが、[45533]でおっしゃった
>> 例ですが新しく店所情報の6行目に書いたものは、
>> 集約表では8行目に既に入力されている事を認識してその次の行に書き込む。
>という意味はどういう意味ですか?

私の当初の考えでは、シートをそのまま上書というのではなく新しく追加になったもの
だけを集約表に追加していく。というイメージを持っていました。
そのときのイメージがこのような文章になったものです。
ですが現在はかすみちゃん様の御指導いただいたコードのほうがより良く
使いやすいため参考にさせていただいています。

【45646】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/8(月) 14:55 -

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

>最終行の判断とは?

最終行の判断とは、B列やH列にどこまでデータが入っているのか、どこまでの
行を集約表.xlsに転記したいのかということです。
  A B C
1  あ
2  い
3  う
4
のようなデータのときは、3

  A B C
1  あ
2  い
3  う
4
5  え
6
のようなデータのときは、5
というような感じです。

なお、
.Cells(Rows.Count, 2).End(xlUp)
というのは、Excel2003までの場合、
.Range("B65536").End(xlup)
と同じ意味で、
B65536セルをアクティブにした状態で、Endキーを押して、↑キーを押すという
一般操作をマクロにしただけです。
ですので、一般操作でどんな感じの動きになるかを確認してみてください。
そして、その操作を「マクロの記録」で記録してみてください。

>私の当初の考えでは、シートをそのまま上書というのではなく新しく追加になったもの
>だけを集約表に追加していく。

それであれば、逆にどこまでを転記したのかという情報を「店所情報.xls」に
持たせておく必要があると思いますよ。
そのような情報がない場合、1行ずつ転記したかどうかを判断して、転記して
いなかったら、それは新しく追加したものとして、転記するというような面倒
なコードを書かないといけません。
どうしますか?

何度も、申し上げているのですが、
1つの年度の情報を何回か転記する場合は、店所情報.xlsと集約表.xlsのどち
らかに、転記済みのフラグのようなものが必要かと思います。

【45649】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/8(月) 15:39 -

引用なし
パスワード
   かみちゃん様
返信ありがとうございます。
>最終行の判断とは、B列やH列にどこまでデータが入っているのか、どこまでの
>行を集約表.xlsに転記したいのかということです。
>  A B C
>1  あ
>2  い
>3  う
>4
>のようなデータのときは、3
>
>  A B C
>1  あ
>2  い
>3  う
>4
>5  え
>6
>のようなデータのときは、5
>というような感じです。
>
説明ありがとうございます。
なかなか理解できずにすいません。
この説明から下記コードのどこが変更必要なのでしょうか。

>>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _

H列だから8,H列のみだから1というのは分かるんですが最終行の判断となると
どこをかまっていいのか、親切に教えていただいてるのは分かるのですが
理解できません。すいません。


>それであれば、逆にどこまでを転記したのかという情報を「店所情報.xls」に
>持たせておく必要があると思いますよ。
>そのような情報がない場合、1行ずつ転記したかどうかを判断して、転記して
>いなかったら、それは新しく追加したものとして、転記するというような面倒
>なコードを書かないといけません。
>どうしますか?

難しいコードを組まなくてはならないようなので
以前のような考えはなくなりました。

>何度も、申し上げているのですが、
>1つの年度の情報を何回か転記する場合は、店所情報.xlsと集約表.xlsのどち
>らかに、転記済みのフラグのようなものが必要かと思います。

また難しい事が・・・。フラグをつけるような能力が私にはありません(泣)

【45650】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/8(月) 18:48 -

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

>>最終行の判断とは、B列やH列にどこまでデータが入っているのか、どこまでの
>>行を集約表.xlsに転記したいのかということです。
>>  A B C
>>1  あ
>>2  い
>>3  う
>>4
>>(以下B列には値は入っていない)
>>のようなデータのときは、3
>>
>>  A B C
>>1  あ
>>2  い
>>3  う
>>4
>>5  え
>>6
>>(以下B列には値は入っていない)
>>のようなデータのときは、5
>>というような感じです。
>>
>この説明から下記コードのどこが変更必要なのでしょうか。

上記の3とか5は、
Cells(Rows.Count, 2).End(xlUp).Row
で取得される値のことです。
これは、B列(2列目)の値が入っている最終行という意味です。

>>>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>>  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>
>H列だから8,H列のみだから1というのは分かる

H列の値が入っている最終行を求めるのだから、
.Cells(Rows.Count, 8).End(xlUp)
ですよね?
では、
If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
は、何の判断をしていると思いますか?

答えをサラッと書くのは簡単ですが、今後勉強されるのであれば、vangさんのためになりません。
よく使う処理なので、ぜひきちんと理解していただきたいのです。

>>それであれば、逆にどこまでを転記したのかという情報を「店所情報.xls」に
>>持たせておく必要があると思いますよ。
>>そのような情報がない場合、1行ずつ転記したかどうかを判断して、転記して
>>いなかったら、それは新しく追加したものとして、転記するというような面倒
>>なコードを書かないといけません。
>>どうしますか?
>
>難しいコードを組まなくてはならないようなので
>以前のような考えはなくなりました。

それであれば、対応は、まったく変わります。

Workbooks("集約表.xls").ActiveSheet.Range("B6")
の部分を
Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
とします。
なお、このコードにすると、H18年度店所情報.xlsを転記したあとに、
再度、H18年度店所情報.xlsを転記することはできません。
エラーが起こるわけではないですが、二重転記になりますので、十分注意してください。
(そういう考えがなくなったということのようですが、心配です)

>>何度も、申し上げているのですが、
>>1つの年度の情報を何回か転記する場合は、店所情報.xlsと集約表.xlsのどち
>>らかに、転記済みのフラグのようなものが必要かと思います。
>
>また難しい事が・・・。フラグをつけるような能力が私にはありません(泣)

難しいですか?
Excelが泣いていますよ。
今、集約表.xlsに転記されているのは、H18?H19?
これから転記されてくる店所情報.xlsは、H18?H19?
これから転記されるのは、ファイル名で判断できるけど、転記されているのは、わからないなぁ〜(Excel談)

【45652】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/8(月) 19:16 -

引用なし
パスワード
   かみちゃん様

>H列の値が入っている最終行を求めるのだから、
>.Cells(Rows.Count, 8).End(xlUp)
>ですよね?
>では、
>If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>は、何の判断をしていると思いますか?

With ws1
  If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then
H列だから8としてみたんですけどこれではうまく行かないんですね・・・。
 .Row >3 に3とは何をさしているんでしょうか。

  .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("故障一覧表.xls").ActiveSheet.Range("E2")
 End If

>答えをサラッと書くのは簡単ですが、今後勉強されるのであれば、vangさんのためになりません。
>よく使う処理なので、ぜひきちんと理解していただきたいのです。

ありがとうございます。基礎がないのでなかなか難しくて困っています。
結局今日は完成しそうにありません。

>>難しいコードを組まなくてはならないようなので
>>以前のような考えはなくなりました。
>
>それであれば、対応は、まったく変わります。
>
>Workbooks("集約表.xls").ActiveSheet.Range("B6")
>の部分を
>Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
>とします。
>なお、このコードにすると、H18年度店所情報.xlsを転記したあとに、
>再度、H18年度店所情報.xlsを転記することはできません。
>エラーが起こるわけではないですが、二重転記になりますので、十分注意してください。
>(そういう考えがなくなったということのようですが、心配です)

ご心配ありがとうございます。
現在は今のコードのまま完成まで行きたいと思っています。

>難しいですか?
>Excelが泣いていますよ。
>今、集約表.xlsに転記されているのは、H18?H19?
>これから転記されてくる店所情報.xlsは、H18?H19?
>これから転記されるのは、ファイル名で判断できるけど、転記されているのは、わからないなぁ〜(Excel談)

まだフラグをどのように使っていいかも分かっていないので、
現在は今作っている何回も上書されるようなコードで進めたいと思います。
質問のお答えですが、
現在転記しているのは、H18店所情報です。
4月1日以降はH19店所情報より取り込みます。

【45653】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/8(月) 19:34 -

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

>>H列の値が入っている最終行を求めるのだから、
>>.Cells(Rows.Count, 8).End(xlUp)
>>ですよね?
>>では、
>>If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>は、何の判断をしていると思いますか?
>
>With ws1
>  If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then
>H列だから8としてみたんですけどこれではうまく行かないんですね・・・。

何がどのようにうまくいかないのでしょうか?

> 店所情報.xlsのH列に何も書かれていないとH列にどうしても題字が入ってきて

H列には3行目より下には値は入っていないのですよね?
逆に、H列の最終行が3より大きければ、転記処理をするというコードにしているのですが・・・

> .Row >3 に3とは何をさしているんでしょうか。

Rowプロパティの意味わかっていますか?
あせる気持ちはわかりますが、わからないなら、ヘルプを調べましょう。
MsgBox Range("H3").Row
MsgBox Range("H100").Row
MsgBox Range("H65536").Row

>ありがとうございます。基礎がないのでなかなか難しくて困っています。

マクロの記録で記録してみるのもひとつのなのですが、
以下のURLが参考になりますでしょうか?
http://www.moug.net/skillup/nksw/nksw01-01.htm
(※最初の4文字は半角にしてください。)

>>それであれば、対応は、まったく変わります。
>>
>>Workbooks("集約表.xls").ActiveSheet.Range("B6")
>>の部分を
>>Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
>>とします。
>>なお、このコードにすると、H18年度店所情報.xlsを転記したあとに、
>>再度、H18年度店所情報.xlsを転記することはできません。
>>エラーが起こるわけではないですが、二重転記になりますので、十分注意してください。
>>(そういう考えがなくなったということのようですが、心配です)
>
>ご心配ありがとうございます。
>現在は今のコードのまま完成まで行きたいと思っています。

今のコードでは、H19年度店所情報.xlsのデータを転記しようとすると、
転記済みのH18年度店所情報.xlsが上書きされますよ。
それを回避するためには、上記のようにすればいいです。
ただし、これにするためには、使用上の注意事項があるということです。

>質問のお答えですが、
>現在転記しているのは、H18店所情報です。
>4月1日以降はH19店所情報より取り込みます。

私に答えられても困ります。
それをExcelに教えてあげてください。
それが「ない」からできないと、申し上げているのです。

【45654】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 9:55 -

引用なし
パスワード
   かみちゃん様
おはようございます。

>>>H列の値が入っている最終行を求めるのだから、
>>>.Cells(Rows.Count, 8).End(xlUp)
>>>ですよね?
>>>では、
>>>If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>>は、何の判断をしていると思いますか?
>>
>>With ws1
>>  If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then
>>H列だから8としてみたんですけどこれではうまく行かないんですね・・・。
>
>何がどのようにうまくいかないのでしょうか?

この状態だとやはり店所情報のH列に何も入ってないと
集約表のE列(E列に表示させたい)に店所情報の題字が入ってきてしまいます。
すいませんが回答をいただけないでしょうか。よろしくお願いします。
回答を見て勉強して行きたいと思います。

【45655】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/9(火) 10:11 -

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

>この状態だとやはり店所情報のH列に何も入ってないと
>集約表のE列(E列に表示させたい)に店所情報の題字が入ってきてしまいます。

H列は、もしかして、数式が設定されていませんか?
""という空白を示すデータが入っていると、目には見えないがデータは入っている
ことになります。

以下のコードでどのように表示されるか確認してみてください。
With ws1
 MsgBox "H列の最終行は " & .Cells(Rows.Count, 8).End(xlUp).Row
 If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then

【45657】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 11:44 -

引用なし
パスワード
   かみちゃん様
こんにちは。返信ありがとうございます。

>>この状態だとやはり店所情報のH列に何も入ってないと
>>集約表のE列(E列に表示させたい)に店所情報の題字が入ってきてしまいます。
>
>H列は、もしかして、数式が設定されていませんか?
>""という空白を示すデータが入っていると、目には見えないがデータは入っている
>ことになります。
>
>以下のコードでどのように表示されるか確認してみてください。
>With ws1
> MsgBox "H列の最終行は " & .Cells(Rows.Count, 8).End(xlUp).Row
> If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then

With ws1
 MsgBox "H列の最終行は " & .Cells(Rows.Count, 8).End(xlUp).Row
 If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then
    .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("E2")
 End If
 End With
 WB1.Close
End Sub
で試してみましたが「最終行は2」と表示されました。数式は入っていないです。

With ws1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then 
'2だとH列から取り込みE列に表示するが店所情報に何も入っていないと題字が取り込まれる。8だと取り込まない。このようなのようない状態になります。
   .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("E2")
 End If
 End With
 WB1.Close
End Sub

どこを改良すればよいのでしょうか?
頼ってばかりで本当にすいません。

【45658】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/9(火) 12:16 -

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

>で試してみましたが「最終行は2」と表示されました。数式は入っていないです。

であれば、以下のコードが転記の部分なのですが、このコードは処理されないはずです。

    .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("E2")

>With ws1
>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then 
>'2だとH列から取り込みE列に表示するが店所情報に何も入っていないと題字が取り込まれる。8だと取り込まない。このようなのようない状態になります。

意味がわかりません。
2が何を意味しているかわかりますか?
3が何を意味しているかわかりますか?
「このようなのようない状態」とはどういう意味ですか?

もう少し、落ち着いて、何をしたいのか整理してみませんか?
焦ると、ロクなことにならないですよ。

【45660】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 13:07 -

引用なし
パスワード
   かみちゃん 様
返信ありがとうございます。

>であれば、以下のコードが転記の部分なのですが、このコードは処理されないはずです。
>
>    .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>   Workbooks("集約表.xls").ActiveSheet.Range("E2")

という事は意味のないコードと言うことでしょうか。


>>With ws1
>>'2だとH列から取り込みE列に表示するが店所情報に何も入っていないと題字が取り込まれる。8だと取り込まない。このようなのようない状態になります。
>

少し整理してみます。
>>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then 
              ―
              この2の部分を先ほど言っていたのですが
              2のままだとちゃんと店所情報から取り込んで
              くるのですが、店所情報に何も書いてないと
              題字を取り込んでしまいます。
              8にすると、何も取り込まなくる。
 
現在、こうできたらいいなと言うイメージですが
(H18店所情報.xls)
  A  B  C  D  E  F  G  H
1   
2   (2行目までは題字や枠組みなど)
3    ○  ▲  ■  ×      ◎  (3行目より入力開始)
4    あ  い  う  え       さ
5    か  き  く  け       た 
6

   ↓ 集約表のボタンを押す。

(集約表.xls)
  A  B  C  D  E  F
1   (1行目は題字や枠組みなど)
2  (2行目より入力(集約)が始まっています。)
3   
4    (過去の情報が入っています)
5
6    ○  ▲     ◎
7    あ  い    さ
8    か  き     た
9
(取り込みした時に題字が入らないようにする)

このようなイメージでおります。
もう少しお知恵をお貸し下さい。よろしくお願いします。

【45661】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/9(火) 13:36 -

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

>>であれば、以下のコードが転記の部分なのですが、このコードは処理されないはずです。
>>
>>    .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>>   Workbooks("集約表.xls").ActiveSheet.Range("E2")
>
>という事は意味のないコードと言うことでしょうか。

そんなことは申し上げていません。
事象がおかしいと思っています。

>>>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then 
>              ―
>              この2の部分を先ほど言っていたのですが
>              2のままだとちゃんと店所情報から取り込んで
>              くるのですが、店所情報に何も書いてないと
>              題字を取り込んでしまいます。
>              8にすると、何も取り込まなくる。

逆ではないでしょうか?
そのときの対象シート(ws1)は処理したいシートになっていますよね?

> 2のままだとちゃんと店所情報から取り込んで

店所情報.xlsのB列(2列目)の3行目より下に値が入っていれば、データの転記がされます。
店所情報.xlsのB列(2列目)の3行目より下に何も書いていないと、データの転記はされません。

> 8にすると、何も取り込まなくる。

何のために 8 にするのか、 2 ではいけないのでしょうか?
下記のご提示のイメージで、B列(2列目)とH列(8列目)の値が入っている最終行
が違うのでしょうか?
値が入っている最終行が3より大きいければ、(〜.Row > 3)、転記するコードが処理されるはずなのですが・・

>現在、こうできたらいいなと言うイメージですが
>(H18店所情報.xls)
>  A  B  C  D  E  F  G  H
>1   
>2   (2行目までは題字や枠組みなど)
>3    ○  ▲  ■  ×      ◎  (3行目より入力開始)
>4    あ  い  う  え       さ
>5    か  き  く  け       た 
>6
>
>   ↓ 集約表のボタンを押す。
>
>(集約表.xls)
>  A  B  C  D  E  F
>1   (1行目は題字や枠組みなど)
>2  (2行目より入力(集約)が始まっています。)
>3   
>4    (過去の情報が入っています)
>5
>6    ○  ▲     ◎
>7    あ  い    さ
>8    か  き     た
>9
>(取り込みした時に題字が入らないようにする)

【45663】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 14:28 -

引用なし
パスワード
   かみちゃん様
こんにちは。返信ありがとうございます。


>下記のご提示のイメージで、B列(2列目)とH列(8列目)の値が入っている最終行
>が違うのでしょうか?
値が入っている最終行がB列とH列では違うときがあります。

>値が入っている最終行が3より大きいければ、(〜.Row > 3)、転記するコードが処理されるはずなのですが・・

(H18店所情報.xls)
  A  B  C  D  E  F  G  H
1   
2   (2行目までは題字や枠組みなど)
3    ○  ▲  ■  ×        (3行目より入力開始)
4    あ  い  う  え      
5    か  き  く  け        
6
※H列は後日記入為空白状態の時がある。

   ↓ H列に何もない状態で集約表のボタンを押す。

(集約表.xls)
  A  B  C  D  E  F
1   (1行目は題字や枠組みなど)
2  (2行目より入力(集約)が始まっています。)
3   ○  ▲
4   あ  い
5   か  き
6        
7       
8        
9
(転記時E列に題字が入ってしまう)
※題字が転記しないようにしたい。

上記のような状態になってしまうコードが下記コードです。

Sub Sample()
 Dim WB1 As Workbook
 Dim WB2 As Workbook

 Set WB1 = Workbooks.Open("C:\店所情報.xls")
 Set ws1 = WB1.Worksheets("○○○")

 With ws1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
  .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 2).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("B2")
  End If
  End With
  With ws1
 
 If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
    .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
   Workbooks("集約表.xls").ActiveSheet.Range("E2")
 End If
 End With
 WB1.Close
End Sub

【45664】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/9(火) 14:40 -

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

>※題字が転記しないようにしたい。

とりあえず、以下のようにすればできますよ。
ずうっと申し上げていることですが・・・
★の部分の追加修正と、インデントの整理をしています。

Sub Sample1()
 Dim WB1 As Workbook
 Dim WB2 As Workbook
 Dim Ws1 As Worksheet '★

 Set WB1 = Workbooks.Open("C:\店所情報.xls")
 Set Ws1 = WB1.Worksheets("○○○")

 With Ws1
  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 2).Copy _
    Workbooks("集約表.xls").ActiveSheet.Range("B2")
  End If
 End With
 With Ws1
  If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then '★
   .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
    Workbooks("集約表.xls").ActiveSheet.Range("E2")
  End If
 End With
 WB1.Close
End Sub

【45665】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 14:56 -

引用なし
パスワード
   かみちゃん様
こんにちは。返信ありがとうございます。
理解できずにここまで引っ張ってしまい申し訳ありませんでした。
下記コードで試してみました。

>Sub Sample1()
> Dim WB1 As Workbook
> Dim WB2 As Workbook
> Dim Ws1 As Worksheet '★
>
> Set WB1 = Workbooks.Open("C:\店所情報.xls")
> Set Ws1 = WB1.Worksheets("○○○")
>
> With Ws1
>  If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>   .Range("B3", .Cells(Rows.Count, 2).End(xlUp)).Resize(, 2).Copy _
>    Workbooks("集約表.xls").ActiveSheet.Range("B2")
>  End If
> End With
> With Ws1
>  If .Cells(Rows.Count, 8).End(xlUp).Row > 3 Then
>   .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>    Workbooks("集約表.xls").ActiveSheet.Range("E2")
>  End If
> End With
> WB1.Close
>End Sub
 
ですがE列に値を転記できないのですが、この場合はどうすればよいのでしょうか。
他は完璧です。ありがとうございます。

【45666】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/9(火) 15:20 -

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

>E列に値を転記できない

ひとつ、再度確認させてください。

> H列に何もない状態で集約表のボタンを押す。
> (転記時E列に題字が入ってしまう)
> ※題字が転記しないようにしたい。

では、ないのですか?
E列に転記できないのは、店所情報.xlsのH列の3行めより下に値が何も入っていないからのはずです。

【45667】Re:年度情報を集約ファイルに書き込むに...
発言  vang  - 07/1/9(火) 15:34 -

引用なし
パスワード
   かみちゃん様
>>> H列に何もない状態で集約表のボタンを押す。
>> (転記時E列に題字が入ってしまう)
>> ※題字が転記しないようにしたい。
>
>では、ないのですか?
>E列に転記できないのは、店所情報.xlsのH列の3行めより下に値が何も入っていないからのはずです。

先ほどのコードで試してみたところ
H列3行目に値を入れても転記されないのです。

【45668】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん E-MAIL  - 07/1/9(火) 16:38 -

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

>>>> H列に何もない状態で集約表のボタンを押す。
>>> (転記時E列に題字が入ってしまう)
>>> ※題字が転記しないようにしたい。
>>
>>では、ないのですか?
>>E列に転記できないのは、店所情報.xlsのH列の3行めより下に値が何も入っていないからのはずです。
>
>先ほどのコードで試してみたところ
>H列3行目に値を入れても転記されないのです。

以下のようにした場合は、「★」は転記したいということですか?
3行目は、タイトルだと思っていました。

(H18店所情報.xls)
  A  B  C  D  E  F  G  H
1   
2   (2行目までは題字や枠組みなど)
3    ○  ▲  ■  ×      ★  (3行目より入力開始)
4    あ  い  う  え      
5    か  き  く  け        
6
※H列は後日記入為空白状態の時がある。

〜.Row > 3 Then

〜.Row > 2 Then
としてみてください。

というか、
.Rpw > 3
をずうっと説明しているのですから、これを理解していただければ、私の勘違いが
明白になったわけですが・・・

【45669】Re:年度情報を集約ファイルに書き込むに...
お礼  vang  - 07/1/9(火) 16:47 -

引用なし
パスワード
   ▼かみちゃん さん:
返信ありがとうございます。
先ほどの書き込みの後、下記のような変更をしてみたら
うまくいきました。

>〜.Row > 3 Then
>を
>〜.Row > 2 Then
>としてみてください。
>
>というか、
>.Rpw > 3
>をずうっと説明しているのですから、これを理解していただければ、私の勘違いが
>明白になったわけですが・・・

理解不足ですみません。親切にお付き合いいただいて本当に感謝です。
ありがとうござます。
参考書なりで勉強していきたいと思います。

【45670】Re:年度情報を集約ファイルに書き込むに...
発言  かみちゃん  - 07/1/9(火) 16:57 -

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

>先ほどの書き込みの後、下記のような変更をしてみたら
>うまくいきました。

よかったです。
結果として、私の要件理解不足による勘違いでした。申し訳ありませんでした。

なお、ご理解いただいているかと思いますが、
.Row > 2
は、2箇所とも修正してくださいね。

【45672】Re:年度情報を集約ファイルに書き込むに...
お礼  vang  - 07/1/9(火) 18:26 -

引用なし
パスワード
   かみちゃん様
こんにちは。返信ありがとうございます。

>〜.Row > 3 Then
>を
>〜.Row > 2 Then
>としてみてください。
>
>というか、
>.Rpw > 3
>をずうっと説明しているのですから、これを理解していただければ、私の勘違いが
>明白になったわけですが・・・

先ほどの返信後に自分で試したところできてました。
なかなかかみちゃん様の言う事を理解できずにすいません。
勉強します。
本当にありがとうございました。

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