• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数ファイルデータを1つに纏めるチェックボックス有)

複数ファイルデータを1つに纏めるチェックボックス有

HohoPapaの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.6

本番環境でなにやらエラーが起きたり いつまでたっても終わらない、 といった症状があるようであれば、 後記手当を行うことで マクロブック配置フォルダーに実行ログを出力できます。 マクロの実行中であっても このログファイルを別な個所に複写し メモ帳で開けば、どこまで進んでいるかを確認できます。 よかったら仕込んでみてください。 '// 以下をコード群の末尾に追記 Sub LogPut(MyText As String)  Open ThisWorkbook.path & "\MyLog.txt" For Append As #1  Print #1, Now & Chr(9) & MyText  Close #1 End Sub '// ここまで 更に、以下を差し替え '取得したファイルのデータを取得して格納する Sub execute(f As file)  Dim GetBook As Workbook  Dim GetSheet As Worksheet  Dim FLastRow As Long  Dim TLastRow As Long  Dim r As Long    LogPut f.path   'この行を新たに追加  HitFileCount = HitFileCount + 1  'ファイルを開いてシートを取得  Set GetBook = Workbooks.Open(f.path)  Set GetSheet = GetBook.Sheets(tgSheet)    If HitFileCount = 1 Then   PutBook.Sheets("Sheet1").Range("B1:E1").Value = _    GetSheet.Range("B6:E6").Value   PutBook.Sheets("Sheet1").Range("F1").Value = _    GetSheet.Range("F5").Value   PutBook.Sheets("Sheet1").Range("G1:H1").Value = _    GetSheet.Range("G6:H6").Value   PutBook.Sheets("Sheet1").Range("I1:K1").Value = _    GetSheet.Range("I7:K7").Value   PutBook.Sheets("Sheet1").Range("N1").Value = _    GetSheet.Range("N6").Value   PutBook.Sheets("Sheet1").Range("A1").Value = A_Title   RowCount = 2  End If    '最終行を取得して、対象範囲を複写  FLastRow = GetSheet.Cells(Rows.Count, "B").End(xlUp).Row  TLastRow = PutBook.Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row + 1    PutBook.Sheets("Sheet1").Range("B" & TLastRow & ":K" & TLastRow + FLastRow - 8).Value = _   GetSheet.Range("B8:K" & FLastRow).Value    GetSheet.Range("N8:U" & FLastRow).Copy _   PutBook.Sheets("Sheet1").Range("N" & TLastRow & ":U" & TLastRow + FLastRow - 8)    PutBook.Sheets("Sheet1").Range("A" & TLastRow & ":A" & TLastRow + FLastRow - 8).Value = _   Mid(f.Name, 7, 8)    GetBook.Close End Sub

nnirosan
質問者

お礼

引き続きお世話になっております。 お薦め下さいました、マクロを実行しました。 自宅PC上では、相変わらず、出力ファイル保存の画面が隠れてしまっているようで、出力ファイルの保存が出来ませんでした。 別のPCでは、出力ファイルの保存画面が見えましたので、保存しマクロは正常終了しました。 実行ログも確認する事が出来ました。 チェックボックスを吐き出さない出力ファイルの行数は1221行作成されており、入力ファイルも全て正常に読み込まれた事を確認しました。 マクロ稼働時間は約20分間でした。有難うございました。 出力ファイルは、マクロ稼働前に作成した方が良いのかなと思いました。マクロの修正が可能なようでしたら、 ご教示を頂けますと大変助かります。 入力ファイルも、指定したホルダーのみのデータだけ読み込む設定のコードのご教示をお願いいたします。 この2点を解決する事が出来れば問題無しになると思います。大変お手数でも、どうぞよろしくお願いいたします。

nnirosan
質問者

補足

大変お世話になっております。 続けてご教示を頂きまして、ありがとうございました。 VBAのスクリプトでこんなきめ細かい事が出来てしまうのですね。 あれから、数回マクロを繰り返している内に、やっと気づいたのですが、マクロがフリーズしているのではなく、 入力ファイルの読み込みが全て完了後、出力ファイル名作成要求画面が、マクロを起動した画面の後ろに隠れてしまっている為のようです。マウスは正常に動いております。 これらを解決するには、出力ファイルの保存場所を、入力ファイルを読み込む前に指定すれば問題ないのかなとも思いました。マクロのコードの修正が可能でしたら、出力ファイル保存場所を指定してから、入力ファイルを読み込めるようにするコードをご教示頂けないでしょうか? 又は、もっと良い方法がありましたらご教示を頂けますと大変助かります。 それから、もう一点、ご教示を頂きたい事があります。 入力ファイルの読み込みですが、指定したホルダー内でのみ読み込むようにして、入力ファイル名のトップが『課題参加者』拡張子が『xlsx』のファイルのみを読み込む設定へのコードの修正をご教示頂けないでしょうか。 下記のコードは、指定したホルダーの更にその配下のホルダーのファイルも読み込むのだと思います。それを、指定したホルダー内だけのファイルを読み込むようにしたいのですが、どのようなコードにしら良いの分かりません。 getFilesRecursive (BaseDir) 本日、ご教示頂きました実行ログの出力方法をこれからスクリプトを追加修正し、マクロを起動してみます。ありがとうございました。 マクロを起動中は、負荷がかかっているようで、タイミングによっては、入力ファイル読み込み途中で止まってしまう事が何度かありましたので、それらの確認には大変便利になるとおもいます。 チェックボックスはコードをコメントアウトして出力ファイルに吐き出さない事にしました。チェックボックスが入った出力ファイルは大変な負荷がかかって重たい物になりました。 大変お手数をお掛けしておりますが、VBAコードについて覚えるきっかけになっております。 マクロ実行後の結果は、再度ご報告させて頂きます。

関連するQ&A

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • 複数EXCELファイル中のデータを1つのファイルへ

    同じシート名、同じフォーマットで記載されている約400個のEXCELファイルから、『Participant List』というシート名のB列~H列、8行目~50行の範囲の記載を1つのEXCELファイルに纏めるVBAスクリプトを作成し実行したいのですが、VBAが全く分からず大変困っております。 マクロを実行した時に、入力ファイルと出力ファイルの保存ホルダーを聞いて指定出来るように出来た良いと思っています。 何方か、お分かりでしたらどうぞお力添えをお願いいたします。 <詳細> ・400個の入力EXCELファイルには、『Participant List』、『特定類型』の2つのシートが入っており、今回の入力用シートは『Participant List』になります。 ・今回抜き出したい記載は、『Participant List』シート中のB列~列、8行目~50行の範囲の記載になります。 ・『Participant List』シート中のB列の6行目と7行目のセルは結合しており、各列のタイトルは以下の通りになっています。  このタイトル名を出力ファイルの1行目へデータの各列のタイトルとして付けて、2行目以降より400個の入力ファイル中のデータを連結したいです。   B列:6,7行=『職員番号(nimsID)』     C列:6,7行=『名前(Name)』       D列:6,7行=『部門(Research Center, Division)』   E列:6,7行=『グループ(Group)』   F列:6,7行=『役職(Title)』   G列:6,7行=『開始年月(Start)』   H列:6,7行=『終了年月(End)』 ・出力ファイル名や出力のシート名は特に考えておりません。 ・入力データは以下ような記載のフォーマットになります。   B列=『職員番号(nimsID)』       例:14769     C列=『名前(Name)』         例:田中 一郎    D列=『部門(Research Center, Division)』 例:総合開発・情報部門   E列=『グループ(Group)』   例:科学リーダー   F列=『役職(Title)』     例:リーダ-   G列=『開始年月(Start)』  例:2023/5/1   H列=『終了年月(End)』   例:2023/5/31 ・入力ファイル名の例=科学登録者_23BB3001.xlsx            科学登録者_23BB3005.xlsx            科学登録者_23BB3405.xlsx ※拙い口足らずな説明となってしまいましたが、どうぞ宜しくお願い致します。

  • 複数のチェックボックスの値を書き込む方法

    複数行のチェックボックスの値をそのまま 書き込みたいのですが・・・ .datファイル↓ 1234,1 5678,0  3456,1 7890,0 上記をHTMLとして出力。 1→checkedで出力されるとします。 チェックを入れて、 7890,0 ↓ 7890,1 にするとそれを1行として保存されるようにしたい です。 チェックボックスは同じ名前のためform('check') などで値を取り出したとしても最後の値しか 値を取り出せないでしょう。 画面に複数出た行を全部.datファイルに書き込むには どうすればよいのでしょうか? http://www.futomi.com/lecture/form/cgi-pm.html ↑を参照しましたが、チェックの値は@配列で 取れるような気がしましたが、1行を書き込む 方法がわからないので詳しく教えていただければ 幸いです。 言葉だけよりソースがあるとわかりやすいですm(__)m

    • ベストアンサー
    • Perl
  • HTML チェックボックスで複数の値

    初心者です。 HTMLで下記のような計算ができるシートを作成しようと思っています。 表   A B C □ D E F □ G H I [計算] (□はチェックボックス) チェックボックスをチェックし、計算ボタンを押すと1行目(A,B,C)と選択したチェックボックスの行のそれぞれの列の値の割り算を行い、その結果を合計した数を表示させることを考えています。 チェックボックスをチェックすることでデータを一つ取り込むことはできたのですが、複数データ(列データ)を取り込む方法がよくわかりません。 ご存じの方教えていただけないでしょうか。 初心者ですので、実際のコードから教えて頂けるとありがたいです。 よろしくお願いします。 

  • エクセル チェックボックスの初期値を条件により変更したい。

    エクセル チェックボックスの初期値を条件により変更したい。 表題の質問をさせていただきます。 チェックボックスを20個あらかじめ配した以下のような表があります。 A列:社員ID (随時入力) B列:社員名 (VLOOKUPで表示) C列:チェックボックスを配置 D列:チェックボックスのリンクするセルに設定 チェックボックスの初期値は空欄(FALSE)にしています。 社員IDを入力した時に、連動してチェックボックスの値を「TRUE」にしてチェックを入れたいのです。 現在は社員ID入力後にチェックボックスをクリックしています。 よろしくお願いいたします。

  • アクセス チェックボックスについて

    チェックボックスやコンボボックスを使って入力するようにすると、フィールドに入力できるのが値だけになってしまいます。値でなく、選択した文字列を入力したいのですが、どうやったらいいのでしょうか?

  • エクセル2007・チェックボックス複数・条件書式

    教えてください 添付画像のようにA列17行目以降200人分のチェックボックスまでは作れたのですが、200行目まで一つ一つコントロールの書式設定からリンクするセルをG列にという作業で頭を抱えております。 他の方の質問も参照させていただきましたが、「マクロ」・「Visual Basic」などというものが全く分からない独学エクセル者です。事務や経理の業務とも程遠くただの個人商店の従業員です。専門的な回答をいただいても理解できる知識を持っておりません。 やりたい事は 200人分のチェックボックスにチェックを入れたときにそのお客様の行に色がついて商品のやり取りの終了を一目で解るようにしたいということなんです。 どなた様かお教えいただけませんでしょうか?

  • Excelでチェックボックスを使った列のコピー方法

    案件進捗表を作成しています。 進捗に応じて右へ右へとチェックボックスにチェックを入れていく形にしていて、 チェックボックスのとなりのセルに真偽の値を入れるように反映させています。 案件が増えるごとに、1,2,3行と・・とデータを増やしていきたいのですが、 1行目に作成した形式を下にコピーするとチェックボックスが全データ同じ動きをしてしまいます。 となりのセルに「TRUE」などを返すように反映させているチェックボックスはコピーできませんか? 教えてください。よろしくお願いします。

  • チェックボックスtableの行の複数選択

    jqueryをやっています。 始めて数週間です。 tableは一番左列がチェックボックスで、一番左列のヘッダ行がチェックボックスです。 やりたいことは、一番左の列にチェックボックスがあるtableをjqueryで操作して、 1.チェックボックス列以外の列をクリックしたときチェックボックスをONにする 2.チェックがついた行は背景色を変える 3.マウスオーバー中に1行ハイライト表示する 4.一番左のヘッダのチェックボックスONで全行の背景色を変える。 参考にしたサイトは以下のサイトです。 http://kachibito.net/snippets/table-tr-check ここはバグがあって一番左のチェックボックスはクリックしてもONになりません。 いろいろ調べて左列のチェックボックスONのとき、行クリックのイベントに行っているみたいです。 チェックONの行の背景色をつけたりもしたいのですが、よくわかりませんでした。 ヒントだけでも教えてもらえないでしょうか。 よろしくお願いします。

  • チェックボックスと条件付き書式について教えて下さい!

     B ....N       R    S   T 1          チェック     FALSE 2  表       チェック     TRUE 3          チェック     FALSE 4          チェック     TRUE  すみません。ちょっとわかりずらいですが、B列からN列までとある表があり、R列にチェックボックス、T列にリンクしています。 (R列のチェックひとつひとつのコントロール書式で$T$1と設定をシタ) ここまではなんとか出来たのですが、条件付き書式でチェックをつけた場合(T列がTRUEの場合)B1~N1に水色の塗りつぶしをしたいのですが、 そこがうまく行きません。 B1カラN1を範囲で選択して、数式がT1=TRUEにするとB1だけとかN1だけしか色がつかなかったので、$T$1=TRUEにしたらB1カラN1までうまく色がつきました。 でもこの表は170行くらいありまして…(・・;) $をつけるとパーっとコピーでは出来ないですよね。 チェックボックス作るだけで何時間もかかってしまったので、心が折れています。 独学でやっているので根本的な間違いがあるかもしれませんが、どなたか助けをお願します! ちなみに私のエクセルは2007で会社のほかの人のパソコンはすべて2003です。全員で共用する表です。