• 締切済み

大量のエクセルの共通項目を一つのエクセルにまとめる

Windows10のoffice2016を使用しています。 マクロ初心者です。 仕事でエクセルファイルのデータ整理をしなければいけないのですが、コピー元のエクセルファイルが千単位であり、手作業だと時間がかかりすぎるため、VBAでマクロが動かなくて困っています。調べながら書いておりますが、なぜ動かないかわかっておりません。 コピー元の多くのエクセルファイルと貼付先の一つのエクセルファイルがあります。 コピー元のエクセルファイルは、”計算フォルダ”というフォルダに入っており、 その各々のファイルには、“仕様””日時””用途”とその右隣には値が入力されています。 行いたいことは、 コピー元のファイル内の”仕様””日時””用途”をFindで探して、その隣の値をコピーして、貼付先のエクセルファイルの”貼付先1”というシートに、順に貼付けすることです。 皆さまのお知恵をどうか貸してください。よろしくお願いします。 Sub 取り込みマクロ() Dim objFSO As Object Dim objBook As Object Dim n As Long Dim rngSearch1, rngSearch2, rngSearch3, varSearch Dim myRange As Range Dim FolderPath As String FolderPath = ThisWorkbook.Path & "\計算フォルダ" Set objFSO = CreateObject("Scripting.FileSystemObject") For Each objBook In objFSO.GetFolder(FolderPath).Files n = ThisWorkbook.Sheets("貼付先1").Cells(Rows.Count, "A").End(xlUp).Row + 1 Workbooks.Open objBook.Path Worksheets("コピー元").Activate Set rngSearch1 = .Worksheets("コピー元").Find("仕様") Set rngSearch2 = .Worksheets("コピー元").Find("日時") Set rngSearch3 = .Worksheets("コピー元").Find("用途") If rngSearch1 Is Nothing Then Else rngSearch1.Offset(0, 1).Value.Copy.Sheets("貼付先1").Range ("B" & 1 + n) End If If rngSearch2 Is Nothing Then Else rngSearch2.Offset(0, 1).Value.Copy.Sheets("貼付先1").Range ("C" & 1 + n) End If If rngSearch3 Is Nothing Then Else rngSearch3.Offset(0, 1).Value.Copy.Sheets("貼付先1").Range ("D" & 1 + n) End If With Rows("185").Copy ThisWorkbook.Sheets("貼付先1").Rows(n).PasteSpecial Application.CutCopyMode = False ActiveWorkbook.Close SaveChanges:=False End With On Error Resume Next Next Set objFSO = Nothing MsgBox "完了!" End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>Findでさがして これでは処理に時間がかかると思う。 ーー Excelでなくて、多量データ処理に強いデータベースソフトや他のRDBソフトの利用を考える。( 他ソフトとエクセルデータの交互の行き来は、エクセルが流行っているので、簡単な方法が用意されていると思われるが) こんな長々と自己流のコードを掲げる前に、「構想」そのものの是非や、他によさそうな方法を、ベテランや経験者やソフト業者に聞くべきだと思う。 「構想」とは(コーディングの前にあるもので) (1)本件に適した、何か使うソフトの特定の便利な機能の利用がないか (2)データのJoinで2つ以上のデータ群を紐づける (3)ソートとマージやマッチングで、2つ以上のデータ群を紐づける (4)(2),(3)にも関係するが、SQLを使いこなす (5)Addinソフトなどを既製ソフトを探す。「適当なのがあれば」のはなしだが。 例 本件と関係ないが、例示 https://freesoft-100.com/pasokon/office-utility.html 「複数の Excel シートを一括比較できる差分比較ツール」のように、特化した ソフト。 などのことを、小生は言っている。 課題に合わせてソフトと機能を選ばないと、エクセルの世界だけで、言っていては、だめだと思う。プロはエクセルをメインにして、システムを構築するでしょうか?想像して、または尋ねてみてください。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.2

提示されたコードを限りなく生かしながら 動作するように加筆してみました。 比較することで多少なりとも勉強になるかもしれません。 なお、   With Rows("185").Copy    ThisWorkbook.Sheets("貼付先1").Rows(n).PasteSpecial このコードの意味するところが分からないので コメントアウトしました。 Option Explicit Sub 取り込みマクロ()  Dim objFSO As Object  Dim objBook As Object  Dim n As Long  Dim rngSearch1 As Range  Dim rngSearch2 As Range  Dim rngSearch3 As Range  Dim varSearch As Range  Dim myRange As Range  Dim FolderPath As String  Dim FromBook As Workbook  FolderPath = ThisWorkbook.Path & "\計算フォルダ"  Set objFSO = CreateObject("Scripting.FileSystemObject")  n = ThisWorkbook.Sheets("貼付先1").Cells(Rows.Count, "A").End(xlUp).Row + 1    For Each objBook In objFSO.GetFolder(FolderPath).Files      Set FromBook = Workbooks.Open(objBook.Path)      Set rngSearch1 = FromBook.Worksheets("コピー元").Cells.Find("仕様")   Set rngSearch2 = FromBook.Worksheets("コピー元").Cells.Find("日時")   Set rngSearch3 = FromBook.Worksheets("コピー元").Cells.Find("用途")   If rngSearch1 Is Nothing Then   Else    'rngSearch1.Offset(0, 1).Value.Copy.Sheets("貼付先1").Range ("B" & 1 + n)    rngSearch1.Offset(0, 1).Copy ThisWorkbook.Sheets("貼付先1").Range("B" & 1 + n)   End If   If rngSearch2 Is Nothing Then   Else    rngSearch2.Offset(0, 1).Copy ThisWorkbook.Sheets("貼付先1").Range("C" & 1 + n)   End If   If rngSearch3 Is Nothing Then   Else    rngSearch3.Offset(0, 1).Copy ThisWorkbook.Sheets("貼付先1").Range("D" & 1 + n)   End If   With Rows("185").Copy   ' ThisWorkbook.Sheets("貼付先1").Rows(n).PasteSpecial  '??何?    Application.CutCopyMode = False    ActiveWorkbook.Close SaveChanges:=False   End With   n = n + 1   On Error Resume Next  Next  Set objFSO = Nothing  MsgBox "完了!" End Sub

  • kon555
  • ベストアンサー率52% (1742/3338)
回答No.1

うーん、コード自体に怪しいところがゴロゴロあるので「これが正しいコードですよ」とパッと提示はできそうにないです。 なのでちょっと迂遠ですが、「マクロが動かないとき」の対処方法を回答させていただきます。 そもそも『コピー元のエクセルファイルが千単位であり』という業務環境であれば、このコード1つ正しくなるより余程有益だと思うので。 まず第一に、「動かなくて困っています」をもっと具体的に書きましょう。 そもそも起動したらエラーが出るのか、エラーは出ないけど思った結果にならないのか。エラーが出るならエラーのメッセージを、思った結果にならないなら「どうなるのか」を把握しましょう。 次に、デバッグの基本はf8キーなどのステップイン挙動です。一行ずつ実行されるので、どの部分がおかしいのかが詳細に把握できます。 続いて、マクロを幾つかに分解してみるのもいいでしょう。 今回の貴方の場合は「指定したブックを開いて」「語句を検索して」「コピーして」「貼り付け先ブックの指定シートに」「貼り付けて」「コピー元ブックを閉じる」と、中々複雑な動作になっています。 まず一つずつ分解して、「指定したブックを開く部分」「語句を検索する部分」と分けて、自分で一度マクロを組んでみましょう。 この程度であれば自動記録も十分参考になりますし、個々の動きであればサンプルになるマクロはwebに転がっているはずです。 そうすると、「○○の機能がよく分からない」のか「個々の機能単位なら動くのにまとめると変になる」のかが分かります。 このようにして「何かよく分からないけど動かない」から「△△のような動きになり、○○の部分がおかしいようだが、修正の仕方が分かりません」にまで分解できれば、有効な回答がつきやすくなり、そのうちに勝手に技術もつきます。

関連するQ&A

  • VBAでフォルダ内の全てのcsvファイルからコピペ

    マクロ超初心者です。 フォルダ内のすべてのcvsファイル(500程度)の5列目(500行程度)を新規ファイルの1列目から順にコピーしていきたいのです。 ちなみに元のcvsファイルのシート数は一つだけでシート名には全てファイル名が付いています。 (つまり全てのファイルのシート名が異なる) 見よう見真似で似たようなマクロから意味もわからないまま つぎはぎして下記作りましたが やっぱり動きません。 どなたか詳しい方どうかよろしくお願いします。 Sub Sample() Const FolderPath As String = "C:\data" Dim objFSO As Object Dim objBook As Object Dim lngRow As Long Application.ScreenUpdating = False Set objFSO = CreateObject("Scripting.FileSystemObject") For Each objBook In objFSO.GetFolder(FolderPath).Files lngcolumn = ThisWorkbook.Sheets("sheet1").Range("A" & Columns.Count).End(xlToRight).Column + 1 Workbooks.Open objBook.Path With ActiveWorkbook .Worksheets(1).Column("5").Copy ThisWorkbook.Sheets("sheet1").End(xlToRight).Offset(0, 1) .Close End With Next Set objFSO = Nothing Application.ScreenUpdating = True End Sub

  • 特定のワークシートcsvファイル書き出しほか

    エクセルブックの中身が、 1番目 graphシート 2番目から19番目 ワークシート で構成されているエクセルファイルが100個 AAAというフォルダに入っています。 それぞれのエクセルブックにあるシートを、ブックのファイル名にしたフォルダを作成し、その中にcsvで書き出すプログラムを作りました。 また、AAAのフォルダの1つ上のフォルダ(VBA実行するカレントフォルダ)には、テキストファイルもあり、作成されたフォルダに合わせてコピーするようにしています。 一応、期待通りの動作をしましたが、スッキリとしたプログラムとするために、アドバイスをいただけないでしょうか? また、できれば、それぞれのブックの2番目から7番目のワークシートのみをcsvファイルで書き出したいと思い、シートを2番目から順にアクティブにして書き出すように変更しても1番目のグラフシートからcsvになってしまいました。 特定のワークシートのみをcsvファイルで書き出すにはどのように書いたら良いでしょうか? よろしくおねがいしむす Sub ファイル一括作成()     Application.ScreenUpdating = False         '対象ブックの選択     'フォルダ内のブックを順次選択     Dim FolderPath As String     Dim objFSO As Object     Dim objBook As Object     Dim objFiles As Object     Dim objFile As Object     Dim mysma4 As Object     Set objFSO = CreateObject("Scripting.FileSystemObject")     FolderPath = ActiveWorkbook.Path & "\AAA"     Set objBook = objFSO.GetFolder(FolderPath)     Set objFiles = objFSO.GetFolder(FolderPath).Files     Set mysma4 = objFSO.GetFile(ActiveWorkbook.Path & "\fig_all.TXT")     For Each objFile In objFiles      If objFSO.GetExtensionName(Path:=objFile) Like "xlsx" Then     'ベースファイル名フォルダ作成&sma4ファイルコピー       objFSO.CreateFolder Path:=FolderPath & "\" & objFSO.GetBaseName(objFile)       mysma4.Copy Destination:=FolderPath & "\" & objFSO.GetBaseName(objFile) & "\fig_all.TXT"     '各ファイルcsv書き出し      Workbooks.Open objFile.Path       For Each ws In Worksheets '各シートに対して処理を繰り返す           ws.Activate           'ベースファイルと同じ階層に出力           ActiveWorkbook.SaveAs _           Filename:=FolderPath & "\" & objFSO.GetBaseName(objFile) & "\" & ws.Name & ".csv", _           FileFormat:=xlCSV       Next ws       ActiveWorkbook.Close SaveChanges:=False      Else      End If     Next     MsgBox "ファイル作成が完了しました。"     Set objFSO = Nothing     Set objBook = Nothing     Set objFiles = Nothing     Set mysma4 = Nothing     Application.ScreenUpdating = True End Sub

  • 同フォルダ内のファイルすべて開きコピーするマクロ

    以下マクロは一昨日まで問題なく使えていたのですが、 昨日から突然「データリンクプロパティ」が表示され、 「OK」ですすむと、 「実行時エラー1004 OPENメソッドは失敗しました Workbooksオブジェクト」で デバッグになります。 '------------------------------- ' 指定フォルダ内のファイルからコピー '------------------------------- Sub ALL_COPY() Const FolderPath As String = "\********************" ⇐ここにフォルダパスを入れています。 Dim objFSO As Object Dim objBook As Object Dim lngRow As Long '画面のちらつき制御設定 Application.ScreenUpdating = False 'FileSystemObjectを変数にセット Set objFSO = CreateObject("Scripting.FileSystemObject") 'フォルダ内のファイル全て繰り返し処理 For Each objBook In objFSO.GetFolder(FolderPath).Files '貼り付け行(最終行+1)取得 lngRow = ThisWorkbook.Sheets("■代表").Range("E" & Rows.Count).End(xlUp).Row + 1 MsgBox (objBook) 'ファイルを開く Workbooks.Open objBook.Path         ⇐ここがデバッグになります。 'コピー最終行へ貼り付け With ActiveWorkbook .Sheets("■代表").Rows("3:19").Copy ThisWorkbook.Sheets("■代表").Rows(lngRow) Application.DisplayAlerts = False .Close End With Next 'フォルダ内のファイル全て繰り返し処理 For Each objBook In objFSO.GetFolder(FolderPath).Files '貼り付け行(最終行+1)取得 lngRow = ThisWorkbook.Sheets("■投資家").Range("E" & Rows.Count).End(xlUp).Row + 1 'ファイルを開く Workbooks.Open objBook.Path 'コピー最終行へ貼り付け With ActiveWorkbook .Sheets("■投資家").Rows("3:19").Copy ThisWorkbook.Sheets("■投資家").Rows(lngRow) Application.DisplayAlerts = False .Close End With Next 'オブジェクト変数解放 Set objFSO = Nothing '画面のちらつき制御解除 Application.ScreenUpdating = True End Sub ---------------------------------------------------------- MsgBoxの表示では、「Tumbs.db」がでてきますが、 何か関係があるのでしょうか。 どなたかお知恵をお貸しくださいませ。

  • VBAでのサブフォルダ内のエクセル集約について

    VBAを使って所定のフォルダ内のデータを集計するプログラムをネットで調べ、 以下のように作ってみたのですが、 サブフォルダ内のデータも同じように集計することはできないでしょうか? 以下のプログラムは正常に機能していて、「データフォルダ」直下にあるエクセルは 集計できています。 ※「データフォルダ」内に、都道府県別のフォルダが用意され、その中に市区町村別のエクセルが配置されている感じです。 ※EXCEL2013環境です。 Sub 全国集計() Const FolderPath As String = "\\C:\データフォルダ" Application.ScreenUpdating = False Range("6:1048576").Delete Dim objFSO As Object Dim objBook As Object Dim lngRow As Long Set objFSO = CreateObject("Scripting.FileSystemObject") For Each objBook In objFSO.GetFolder(FolderPath).Files lngRow = ThisWorkbook.Sheets("data").Range("A" & Rows.Count).End(xlUp).Row + 1 Workbooks.Open objBook.Path With ActiveWorkbook .Sheets("data").Rows("5:105").Copy ThisWorkbook.Sheets("data").Rows(lngRow) .Close End With Next Set objFSO = Nothing ActiveWindow.ScrollRow = 1 ActiveWindow.ActiveSheet.Range("A1").Select Application.ScreenUpdating = True End Sub

  • VB6.0でEXCELにシートを追加したい

    初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。 ・既存ファイルがなけれが新規作成 ・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く 私が考えた流れは、 1.既存ファイルを開く 2.新しいシートを追加する 3.シートの名前をつける 4.既に同名シートがあれば上書きの有無を聞く 5.VBで作ったEXCELシートを既存ファイルのシートにコピー 6.既存ファイルを更新 7.EXCELを閉じる です。 まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。 ただ、 シートを追加しようとすると文字が赤くなって怒られました。 いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。 Dim objBook2 As Excel.Workbook Dim objSheet2 As Excel.Worksheet Set objBook2 = objExcel.Workbooks.Open(CDl.FileName) objBook2 .Visible = True Set objSheet2 = objBook2.Worksheets(1) Sheets.Add(after:=Worksheets(Worksheets.Count)) ↑ここでだめでした。 一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。 objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count) 長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。 よろしくお願いします。

  • 単独では、正常な結果になり、複数では正常な結果になりません?

    EXCEL 2002 です。 下記2つのマクロは、それぞれ単独では、正常な結果 ( 希望列幅 ) になるのですが、 複数の 「 Call 」 マクロのうちの1つにして、セットにて実行しますと、 希望列幅 ( 「Sheets(1)」 の列幅 ) になりません。 何卒、ご教示下さいませ。 --------------- Sub セット() Call ズーム75に_貼付元 Call ズーム75に_貼付先 Call 全シートの列非表示を解除_貼付元 Call 全シートの列非表示を解除_貼付先 Call オートフィルタを全て表示_貼付元 Call オートフィルタを全て表示_貼付先 Call コピー Call 列幅も合わせる_貼付元 Call 列幅も合わせる_貼付先 Call 列を非表示_貼付元 Call 列を非表示_貼付先 End Sub '---------------- Sub 列幅も合わせる_貼付元() '必ずsheets(1)だけは手動で希望列幅にしておく Dim i As Integer Workbooks("貼付元.xls").Activate For i = 1 To Worksheets.Count Worksheets(1).Rows("5:5").Copy Worksheets(i).Rows("5:5").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Next i End Sub '-------------- Sub 列幅も合わせる_貼付先() '必ずsheets(1)だけは手動で希望列幅にしておく Dim i As Integer Workbooks("貼付先.xls").Activate For i = 1 To Worksheets.Count Worksheets(1).Rows("5:5").Copy Worksheets(i).Rows("5:5").PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Next i End Sub

  • Excelの1シートを項目別に別シートへ分割

    左図のようなシートがあります。C列(部署番号)の左3桁をキーにデータとシートを分け、右図のようにシート名もその左3桁の名前にしたいと考えています。(部署番号)をキーにする場合は以下の通りとなると思うのですが Sub test1() Dim n As String Dim c, L As Long Dim ws1 As Worksheet On Error GoTo ErrorHandler Set ws1 = Sheets("Sheet1") L = ws1.Range("C65536").End(xlUp).Row For i = 2 To L n = ws1.Range("C" & i) '部門名抽出 c = Sheets(n).Range("C65536").End(xlUp).Row '部門のシートの最終行位置 ws1.Rows(i).Copy Destination:=Sheets(n).Rows(c + 1) Next i Exit Sub ErrorHandler: '部門のシートが無い時の処理 Worksheets.Add.Move after:=Worksheets(Worksheets.Count) '最後のシートの後へ追加 Worksheets(Worksheets.Count).Name = n '部門の名前をシートの名前にする ws1.Rows(1).Copy Destination:=Sheets(n).Rows(1) '1行目の項目名をコピー Resume End Sub (部署番号)の左3桁をキーにした時のコーディングがどうしても分かりません。このようなことが出来ますでしょうか。因みに元データとなる"sheet1"はそのまま残します。どうかご教授の程宜しくお願い致します。

  • これのおかしいところはありますか?エクセル B列

    Option Explicit Sub ExtractColumnB() Dim FolderPath As String Dim FileName As String Dim SourceWorkbook As Workbook Dim TargetWorkbook As Workbook Dim SourceWorksheet As Worksheet Dim TargetWorksheet As Worksheet Dim LastRow As Long Dim TargetLastRow As Long ' 対象フォルダの選択 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "フォルダを選択してください" .AllowMultiSelect = False If .Show <> -1 Then Exit Sub FolderPath = .SelectedItems(1) End With ' 出力用ワークブックとワークシートを作成 Set TargetWorkbook = Workbooks.Add Set TargetWorksheet = TargetWorkbook.Worksheets(1) ' 対象フォルダ内のExcelファイルを順次処理 FileName = Dir(FolderPath & "\*.xls*") Do While FileName <> "" ' ソースファイルを開く Set SourceWorkbook = Workbooks.Open(FolderPath & "\" & FileName) Set SourceWorksheet = SourceWorkbook.Worksheets(1) ' B列のデータを抽出 LastRow = SourceWorksheet.Cells(Rows.Count, 2).End(xlUp).Row ' 抽出したデータを出力用ワークシートにコピー TargetLastRow = TargetWorksheet.Cells(Rows.Count, 2).End(xlUp).Row + 1 SourceWorksheet.Range("B1:B" & LastRow).Copy TargetWorksheet.Range("B" & TargetLastRow) ' ソースファイルを閉じる SourceWorkbook.Close SaveChanges:=False ' 次のファイルへ FileName = Dir Loop ' 確認メッセージ MsgBox "B列のデータ抽出が完了しました。", vbInformation End Sub

  • EXCELのシートを並べ替えすると・・・

    エクセルのシートを並べ替えようと思って こちらで調べてようやく並べ替えができるようになったのですが、幾つかあるデータの中で実行するとエラーが出るものがあります。 シートの名前は1日~31日&集計という構成なのですが、下記を実行すると実行エラー9:インデックスが有効範囲にありません!とでます…デバックを押すと Worksheets(CStr(Wwh.Cells(N, 1).Value)).Move After:=Sheets(N) のところが黄色になっています。 同じようなシートの構成があるデータで試してみると成功するものと失敗するものがありもう何がなにやら(;´Д`) 何か変更しないとだめなんでしょうか? 分かる人がいたらアドバイスお願いします。 Sub SortSheets() Dim Wwh As Worksheet Dim N As Integer Application.ScreenUpdating = False Sheets.Add Before:=Worksheets(1) Set Wwh = ActiveSheet For N = 2 To Worksheets.Count   Cells(N - 1, 1).Value = Worksheets(N).Name   Cells(N - 1, 2).Value = _   Application.GetPhonetic(Worksheets(N).Name) Next N Range("A1").CurrentRegion.Sort Key1:=Range("B1"), _   Order1:=xlAscending, Header:=xlNo, OrderCustom:=1 '昇順 'Range("A1").CurrentRegion.Sort Key1:=Range("B1"), _   Order1:=xlDescending, Header:=xlNo, OrderCustom:=1 '降順 For N = 1 To Range("A1").End(xlDown).Row   Worksheets(CStr(Wwh.Cells(N, 1).Value)).Move After:=Sheets(N) Next N For N = 2 To Worksheets.Count   If Worksheets(N).Visible = xlSheetVisible Then     Worksheets(N).Activate     Exit For   End If Next N Application.DisplayAlerts = False Wwh.Delete Application.DisplayAlerts = True Application.ScreenUpdating = True Set Wwh = Nothing End Sub

  • EXCEL 指定のフォルダ内にあるエクセルをコピー

    どなたかVBAの記述(コード)を教えて下さい。 指定のフォルダ内にあるエクセル(コピー元)を開きコピー、データを順次、指定のエクセル(コピー先)のシートの上から順番に貼付していきたいのです。コピー貼付が終わったら、コピー元のファイルは別のコピー済のフォルダへ移したいです。 フォルダ名は、自分で指定できますが、コピー元のエクセルのファイル名とシート名は一定ではありません。(コピー元ファイルはシート1枚のみ)。セル範囲は、A~F列、行は毎回変動するので、一番下の行を判定する必要があります。 コピー先のファイルは、指定のシート(※)に上から順番に貼り付けをしたいです。 (※セルに入力して指定したいです。) 不足事項などがありましたら、ご指摘いただけると助かります。 よろしくお願いいたします。 なお、簡単な関数のVBAは理解して使えるのですが(IF~ End If、For ~Next 等)、 イベントのプロシージャーなどが今だ理解できず、自分では書くことができません。 そのため。多少コードが長くなってもいいので、イベント・プロシージャーをなるべく使わない書き方のほうが自分で修正することができ、助かります(イベントを使わないと難しい処理でしょうか・・・)。

専門家に質問してみよう