Excel VBA質問箱 IV

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

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


398 / 13645 ツリー ←次へ | 前へ→

【80595】フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 12:00 質問[未読]
【80597】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 12:25 発言[未読]
【80599】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 13:26 質問[未読]
【80600】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 13:55 発言[未読]
【80601】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 14:21 質問[未読]
【80602】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 15:03 発言[未読]
【80603】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 15:58 質問[未読]
【80604】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 16:33 発言[未読]
【80605】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 16:47 質問[未読]
【80606】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 17:01 発言[未読]
【80607】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 17:18 質問[未読]
【80608】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 17:26 発言[未読]
【80609】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 20:33 質問[未読]
【80610】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 21:56 発言[未読]
【80611】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 22:11 質問[未読]
【80612】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 22:28 発言[未読]
【80613】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 23:04 質問[未読]
【80614】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/17(日) 23:18 発言[未読]
【80615】Re:フォルダ内のファイルの一部シートの集計 mkmk 19/3/17(日) 23:50 質問[未読]
【80618】Re:フォルダ内のファイルの一部シートの集計 マナ 19/3/18(月) 18:49 発言[未読]

【80595】フォルダ内のファイルの一部シートの集計
質問  mkmk  - 19/3/17(日) 12:00 -

引用なし
パスワード
   VBA初心者です。

同じフォルダ内の複数ファイルのSHEET"集計"のDATAを同じフォルダにある集計用ファイルのSHEET全集計にコピペしたいです。
集計元のファイルを順番に開いて、集計先の全集計の空白行に続けて転記していく記述をサイト検索し行ったのですが、集計元のファイルは開くのですが、集計先に貼り付けされないです。

11行目のSET TARGET=にカーソルを当てると、本来は集計先であるはずの
内容が、集計元のファイルが表示されます。
ここが原因だと思うのですが、どのような記述にすればよいのかわからず
ご教授頂けないでしょうか。

何卒宜しくお願いいたします。


Sub sample()
  Dim myPath As String
  Dim myFile As String
  Dim target As Range
  On Error Resume Next
  
  myPath = ThisWorkbook.Path & "\"
  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False
  
  myFile = Dir(myPath & "*.xlsx")
  
  Do Until myFile = ""
  
   If myFile <> ThisWorkbook.Name Then
  
  
    Set target = ThisWorkbook.Worksheets("全集計").Cells.SpecialCells(xlCellTypeLastCell).Offset(0).End(xlToLeft)
  
    target = myFile
  
  With Workbooks.Open(Filename:=myPath & myFile)
  .Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1)
  .Close savechanges:=False
   End With
   End If
   myFile = Dir()
  Loop
 
  Cells.Select
  Selection.Copy
  Selection.pastspecial Paste:=xlpastvalues, operation:=xlNone,  skipblanks_:=False, transpse:=False
  Application.CutCopyMode = False

End Sub

【80597】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 12:25 -

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

>    Set target = ThisWorkbook.Worksheets("全集計").Cells.SpecialCells(xlCellTypeLastCell).Offset(0).End(xlToLeft)

こうではないですか?

Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count).End(xlToLeft)

  
>    target = myFile

これは、意味不明です。削除したほうがよいのでは?

>  

>  .Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1)

この段階で、値のみ転記ではだめなのでしょうか?

【80599】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 13:26 -

引用なし
パスワード
   ▼マナ さん:
早速のお返事ありがとうございます。
何度もすみません。もう少し質問させてください。


Set target = ThisWorkbook.Worksheets("全集計").Cells.SpecialCells(xlCellTypeLastCell).Offset(0).End(xlToLeft)
>こうではないですか?
>Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count).End(xlToLeft)
target = myFile
>これは、意味不明です。削除したほうがよいのでは
 →上記2点をこのように変更しました。
>>  .Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1)
>この段階で、値のみ転記ではだめなのでしょうか?

【質問】→この行の下に下記の記述をもってくればよいという事でしょうか?
Cells.Select
  Selection.Copy
  Selection.pastspecial Paste:=xlpastvalues, operation:=xlNone, skipblanks_:=False, transpse:=False
  Application.CutCopyMode = False

【80600】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 13:55 -

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

>【質問】→この行の下に下記の記述をもってくればよいという事でしょうか?
> Cells.Select
>  Selection.Copy
>  Selection.pastspecial Paste:=xlpastvalues, operation:=xlNone, skipblanks_:=False, transpse:=False
>  Application.CutCopyMode = False


いいえ。それだと、

1)コピー→全てを貼付け、
2)再度、コピー→値貼り付け

となるので

1)コピー→値貼り付け

だけでは、だめですか。

【80601】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 14:21 -

引用なし
パスワード
   ご返答ありがとうございます。
再度お願いします。

Copy Destination:=target.Offset(0, 1).pastspecialの後に
 .pastspecial, Paste:=xlPasteValues
を追加したのですが、うまくいきませんでした。
データの貼り付け先が不明のようです。
低レベルで申し訳ありません・・・。

.Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1)
>
>>【質問】→この行の下に下記の記述をもってくればよいという事でしょうか?
>> Cells.Select
>>  Selection.Copy
>>  Selection.pastspecial Paste:=xlpastvalues, operation:=xlNone, skipblanks_:=False, transpse:=False
>>  Application.CutCopyMode = False
>
>
>いいえ。それだと、
>
>1)コピー→全てを貼付け、
>2)再度、コピー→値貼り付け
>
>となるので
>
>1)コピー→値貼り付け
>
>だけでは、だめですか。

【80602】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 15:03 -

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

>Copy Destination:=target.Offset(0, 1).pastspecialの後に
> .pastspecial, Paste:=xlPasteValues
>を追加したのですが、うまくいきませんでした。


pastspecialの構文が間違っています。
適当にしてもうまくいきません。
まずは、ヘルプやネットで検索するようにしてください。

ht tps://www.moug.net/tech/exvba/0050104.html

【80603】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 15:58 -

引用なし
パスワード
   マナ さん
URLもよく見ていたのですが・・・わからず・・すみません。
pastspecialの前に貼り付け先のオブジェクト(RANGE等)がないという事でしょうか?その場合貼り付け先の、FILE SHEET RANGを順に記述すればよいのでしょうか?
貼り付け先のオブジェクトをどのように記述してよいかわからず悩んでいます。

最初の段階でも貼り付け元のファイルは開くが、貼り付けられないでいるので、貼り付け先が正しく指定されていない事が要因だとは思うのですが・・・

With Workbooks.Open(Filename:=myPath & myFile)
  .Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1).pastspecial, Paste:=xlPasteValues
  .Close savechanges:=False

>>Copy Destination:=target.Offset(0, 1).pastspecialの後に
>> .pastspecial, Paste:=xlPasteValues
>>を追加したのですが、うまくいきませんでした。
>
>
>pastspecialの構文が間違っています。
>適当にしてもうまくいきません。
>まずは、ヘルプやネットで検索するようにしてください。
>
>ht tps://www.moug.net/tech/exvba/0050104.html

【80604】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 16:33 -

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

形式を選択して貼り付けは、1行ではかけません。

.Worksheets("集計").Range("a1:b30").Copy
target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

【80605】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 16:47 -

引用なし
パスワード
   ▼マナ さん:
そういう事だったのですね・・・検討違いな考えを・・すみません。

ただ、やはり貼付先の集計FILE SHEET全集計には貼りつきません。
貼り付け元の方で、範囲を指定してCopyまでは進んでいるようなのですが、
もしかすると、そのまま貼り付け元に貼り付けしているのかもしれません。

ほかに原因があるのでしょうか・・・。


>▼mkmk さん:
>
>形式を選択して貼り付けは、1行ではかけません。

>
>.Worksheets("集計").Range("a1:b30").Copy
>target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
>Application.CutCopyMode = False

【80606】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 17:01 -

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

>ただ、やはり貼付先の集計FILE SHEET全集計には貼りつきません。

現在のコードを、もう一度、ここに貼り付けてください。

【80607】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 17:18 -

引用なし
パスワード
   何度もすみません・・。

Sub sample()
  Dim myPath As String
  Dim myFile As String
  Dim target As Range
  On Error Resume Next
  
  myPath = ThisWorkbook.Path & "\"
  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False
  
  myFile = Dir(myPath & "*.xlsx")
  
  Do Until myFile = ""
  
   If myFile <> ThisWorkbook.Name Then
  
  
  Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count)
   
   
  With Workbooks.Open(Filename:=myPath & myFile)
  .Worksheets("集計").Range("a1:b30").Copy Destination:=target.Offset(0, 1)
  .pastspecial Paste:=xlPasteValues
  Application.CutCopyMode = False
  .Close savechanges:=False
   End With
   End If
   myFile = Dir()
  Loop
 
  End Sub


▼マナ さん:
>▼mkmk さん:
>
>>ただ、やはり貼付先の集計FILE SHEET全集計には貼りつきません。
>
>現在のコードを、もう一度、ここに貼り付けてください。

【80608】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 17:26 -

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

指摘箇所が、修正されていないのはなぜでしょうか?
ここまでの、やり取りを、再確認お願いします。

【80609】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 20:33 -

引用なし
パスワード
   すみません。

ご指摘の通り、記述に漏れがありました。
.End(xlToLeft)
無事、転記ができました。
ただ、貼り付けは行方向に追加したかったのですが、
列方向に貼り付く記述でした。
最初の記述に気が付きませんでした。


貼り付け元a1:b30 で、貼り付け先での2ファイル目からa30:b60
というように行方向に追加されるには

再度申し訳ございません。自身でも
Cells(Rows.Count, 1).End(xlUp)とOffset(30, 0)等行ってみたのですが、
上手くいきません
教えて頂けないでしょうか。


Sub sample()
  Dim myPath As String
  Dim myFile As String
  Dim target As Range
  On Error Resume Next
 
  myPath = ThisWorkbook.Path & "\"
  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False
 
   myFile = Dir(myPath & "*.xlsx")
 
   Do Until myFile = ""
  
   If myFile <> ThisWorkbook.Name Then
   Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count).End(xlToLeft)
   With Workbooks.Open(Filename:=myPath & myFile)
  .Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
  .pastspecial Paste:=xlPasteValues
  Application.CutCopyMode = False
  .Close savechanges:=False
   End With
   End If
   myFile = Dir()
  Loop
 
  End Sub

【80610】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 21:56 -

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

>無事、転記ができました。

本当ですか?

>  .Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
>  .pastspecial Paste:=xlPasteValues


実際のコードを、ここにコピー貼り付けけしていただけませんか。

【80611】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 22:11 -

引用なし
パスワード
   おかしい状態ですか?

.Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
.pastspecial Paste:=xlPasteValues
Application.CutCopyMode = False

転記先の全集計シートの表示結果は下記
A    B        C      D     E    ・・・・・
    日付     金額   日付     金額
    20190225    1    20190226    2
    20190225    1    20190226    2
     ・      ・     ・     ・
     ・      ・     ・     ・
 
>▼mkmk さん:
>
>>無事、転記ができました。
>
>本当ですか?
>
>>  .Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
>>  .pastspecial Paste:=xlPasteValues
>
>
>実際のコードを、ここにコピー貼り付けけしていただけませんか。

【80612】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 22:28 -

引用なし
パスワード
   ▼mkmk さん:
>おかしい状態ですか?
>
>.Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
>.pastspecial Paste:=xlPasteValues
>Application.CutCopyMode = False
>


なぜ、そうなるのですか?

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=80604;id=excel

【80613】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 23:04 -

引用なし
パスワード
   すみません。
pastspecial→PasteSpecialですね!!
何故か動きました。

80604で記述頂いたCDをコピペしました。
.Worksheets("集計").Range("a1:b30").Copy
target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False


▼マナ さん:
>▼mkmk さん:
>>おかしい状態ですか?
>>
>>.Worksheets("集計").Range("a1:b30").Copy target.Offset(0, 1)
>>.pastspecial Paste:=xlPasteValues
>>Application.CutCopyMode = False
>>
>
>
>なぜ、そうなるのですか?
>
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=80604;id=excel

【80614】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/17(日) 23:18 -

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

>ただ、貼り付けは行方向に追加したかったのですが、
>列方向に貼り付く記述でした。

>貼り付け元a1:b30 で、貼り付け先での2ファイル目からa30:b60
>というように行方向に追加されるには
>

以下の2行の意味を説明してください。

Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count).End(xlToLeft)

target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues

【80615】Re:フォルダ内のファイルの一部シートの...
質問  mkmk  - 19/3/17(日) 23:50 -

引用なし
パスワード
   下記のような認識です。
▼マナ さん:
>▼mkmk さん:
>。
>>ただ、貼り付けは行方向に追加したかったのですが、
>>列方向に貼り付く記述でした。
>
>>貼り付け元a1:b30 で、貼り付け先での2ファイル目からa30:b60
>>というように行方向に追加されるには
>>
>>
>Set target = ThisWorkbook.Worksheets("全集計").Cells(1, Columns.Count).End(xlToLeft)

→全集計シートの1行目の最終列から空白セルを除いた最終列箇所

>target.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
→offset(0.1)で右方向(列)を1列づつずらして転記

【80618】Re:フォルダ内のファイルの一部シートの...
発言  マナ  - 19/3/18(月) 18:49 -

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


>→全集計シートの1行目の最終列から空白セルを除いた最終列箇所

>→offset(0.1)で右方向(列)を1列づつずらして転記

では、列方向でなく、行方向に、転記するためには、
それぞれ、どう変更したらよいか考えてください。
コードでなくて良いです。
日本語の文章だとどうなるか考えてください。

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