Excel VBA質問箱 IV

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

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


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

【79521】集約データの参照元ブック名を取得しセルへ貼り付ける方法について よっちゃん 17/11/24(金) 22:15 質問[未読]
【79522】Re:集約データの参照元ブック名を取得しセ... マナ 17/11/24(金) 22:37 発言[未読]
【79523】Re:集約データの参照元ブック名を取得しセ... よっちゃん 17/11/24(金) 23:10 回答[未読]
【79524】Re:集約データの参照元ブック名を取得しセ... マナ 17/11/24(金) 23:26 発言[未読]
【79525】Re:集約データの参照元ブック名を取得しセ... よっちゃん 17/11/25(土) 0:12 お礼[未読]
【79526】Re:集約データの参照元ブック名を取得しセ... γ 17/11/25(土) 8:08 発言[未読]
【79527】Re:集約データの参照元ブック名を取得しセ... γ 17/11/25(土) 11:23 発言[未読]
【79528】Re:集約データの参照元ブック名を取得しセ... マナ 17/11/25(土) 12:23 発言[未読]
【79529】Re:集約データの参照元ブック名を取得しセ... γ 17/11/25(土) 12:45 発言[未読]

【79521】集約データの参照元ブック名を取得しセル...
質問  よっちゃん  - 17/11/24(金) 22:15 -

引用なし
パスワード
   初めまして。
VBA初心者のよっちゃんと申します。
勉強不足で初歩的な質問が多いかもしれませんが、よろしくお願いします。

下記のようなプログラムを作成してデータ集約を行っています。
データ集約自体に下記プログラムで問題はないのですが、
データを集約した元ブックの名称を併せて取得したいと考えています。
ネット上でも探してみたのですが、思うようなプログラム紹介が
ありませんでした。

お忙しいと中申し訳ありませんが、ご教授をよろしくお願いします。


Private Sub CommandButton1_Click()
Dim buf As String, i As Long
Dim j

'画面更新の停止
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
'自動再計算の中止
  Application.Calculation = xlCalculationManual

'シートの削除
Range("A6:Z65536").Clear

'データ集約
buf = Dir(Sheets("集約").Range("A2").Value & "\*.xlsx")
Do While buf <> ""
Workbooks.Open Worksheets("集約").Range("A2").Value & "\" & buf
Sheets("入力用").Range("C73:Q102").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(5, 0).Select
ActiveSheet.Paste
Workbooks(buf).Activate
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop

'空白行の削除
Columns("A").SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
Application.CutCopyMode = False

End Sub


【79522】Re:集約データの参照元ブック名を取得し...
発言  マナ  - 17/11/24(金) 22:37 -

引用なし
パスワード
   ▼よっちゃん さん:

ブック名はbufであることは理解できていますか?
なので、それを希望のセルに書き込めばよいです。

【79523】Re:集約データの参照元ブック名を取得し...
回答  よっちゃん  - 17/11/24(金) 23:10 -

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

大変申し訳ありません。
正直、ネット上の情報を元に組み立てたプログラムのため、
深く理解をしておりませんでした。

もしよろしかったら、どのようなプログラムがあるか、
紹介していただけると助かります。

よろしくお願いいたします。

【79524】Re:集約データの参照元ブック名を取得し...
発言  マナ  - 17/11/24(金) 23:26 -

引用なし
パスワード
   ▼よっちゃん さん:

ごめんなさい。今日はもう返事できません。

Private Sub CommandButton1_Click()
  Dim ブック As Worknook
  Dim フォルダ As String
  Dim buf As String
  
  '画面更新の停止
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '自動再計算の中止
  Application.Calculation = xlCalculationManual
  
  'シートの削除
  Range("A6:Z65536").Clear
  
  フォルダ = Range("A2").Value & "\"
  
  'データ集約
  buf = Dir(フォルダ & "*.xlsx")
  Do While buf <> ""
    Set ブック = Workbooks.Open(フォルダ & buf)
    Range("A65536").End(xlUp).Offset(1, 0).Value = buf
    ブック.Sheets("入力用").Range("C73:Q102").Copy Range("A65536").End(xlUp).Offset(1, 0)
    ブック.Close SaveChanges:=False
    buf = Dir()
  Loop
  
  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
  Application.Calculation = xlCalculationAutomatic
  
End Sub

【79525】Re:集約データの参照元ブック名を取得し...
お礼  よっちゃん  - 17/11/25(土) 0:12 -

引用なし
パスワード
   お忙しい中、ご対応頂きありがとうございました。
自分の思っていたものと相違なかったので、
安心しました。
またの機会によろしくお願いいたします。

遅い時間までありがとうございました。

【79526】Re:集約データの参照元ブック名を取得し...
発言  γ  - 17/11/25(土) 8:08 -

引用なし
パスワード
   老婆心ながらひとこと。

> 自分の思っていたものと相違なかった
ということではまだまだですね。
回答からきちんと吸収するようにしたほうがよいと思います。

(1)
きちんとインデントを付けましょう。
コードを書くにあたっての一丁目一番地です。
そういう見にくい書き方は、ご自分にハンディキャップを与えているようなものです。
回答者さんのコードの書き方をよく参考にしてください。
 
(2)
CopyPasteは一行でコンパクトに書けます。
   Sheets("入力用").Range("C73:Q102").Copy
   ThisWorkbook.Activate
   Range("A65536").End(xlUp).Offset(5, 0).Select
   ActiveSheet.Paste
のような Selectを多用する書き方から早く脱出したほうがよいでしょう。

(3)
Set ブック = Workbooks.Open(フォルダ & buf)
のように、変数を効果的に使用した見通しの良いコードの書き方を学んで下さい。

【79527】Re:集約データの参照元ブック名を取得し...
発言  γ  - 17/11/25(土) 11:23 -

引用なし
パスワード
   よくみたら、提示されたコードは完成品というより
考え方を示す参考出品のようでした。
ワークシートの指定が漏れていて、仕様を満たしていなかったですね。
転記先が、開いたブックになってしまっています。
質問者さん、気づいていますか? 修正しておいてください。

【79528】Re:集約データの参照元ブック名を取得し...
発言  マナ  - 17/11/25(土) 12:23 -

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

いつもフォローありがとうございます。

>ワークシートの指定が漏れていて

シートに置かれたボタンと思い込んでいましたので省略しましたが、
ユーザーフォームからだとまずいことになりますね。

最初のインデント等のアドバイスもそうですが、
よっちゃんさんにとって、とても重要なことなので
まだ見てくれているとよいのですが。

【79529】Re:集約データの参照元ブック名を取得し...
発言  γ  - 17/11/25(土) 12:45 -

引用なし
パスワード
   申し訳ありません。私の誤認でした。
シートモジュール記載ということをすっかり失念していました。

じゃあ、タイプミスの
Dim ブック As Worknook
だけですねww

質問者さん、折角質問されたのだから、
きちんと成果をあげてほしいですね。

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