advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 33507 for 関数 (0.006 sec.)
[[20240408155929]]
#score: 2647
@digest: 13683e90042631740db503672783a018
@id: 96568
@mdate: 2024-04-09T21:27:40Z
@size: 8775
@type: text/plain
#keywords: ーー (78879), ロ用 (69029), excelapp (53752), 時” (51341), readpath (44989), 用ブ (31305), bookno (29993), shori (28565), 計ー (23087), タ” (21498), 事手 (17406), 計デ (17278), 家事 (15272), 合ca (10976), 定名 (10318), 一時 (8371), endrow (6095), 列5 (5990), ブッ (5818), の” (4742), ー' (4294), タ" (3659), 各ブ (3646), 集計 (3001), ク名 (2941), ック (2774), 手伝 (2698), 終行 (2575), 名= (2443), 2024 (2401), カウ (2200), 移行 (2177)
『複数のブックから複数のシートのデータコピー』(家事手伝い)
【前提】 <ブック名> マクロ用のブックを用意。 参照先ブックは固定名で「●●●」「×××」等、現在は16ファイル <シート名> 各ブックのシート名はまちまちで、各々シートの数も違うが、 シート名に”集計データ”という文字が含んでいるシートのみを参照する。 各ブックのシート数は30シート程度 【したいこと】 (1)マクロ用ブックから、まず1つ目のブックから”集計データ”という シートを参照する (2)そのシートのB列5番目からB列最後のデータ行を取得し、A列〜E列のデータを一時シートにコピーする。A5〜EXXX(B列データ最後の行) (3)マクロ用ブックにある、”一時”という名前のシートにA1からコピー、 そこで集計して、マクロ用の”集計”シートにコピーする (集計側のプログラムは完成している) (4)集計が終ったら次のシートに進み、(1)〜(3)を繰り返す。最後のブックまで いくと次の固定名のブックに移行し、(1)〜(4)を実行する。16個のブックが終ると処理は終了 例:ブック「●●●」はシートが13個あるが、”集計データ”がシート名に含んだシートが4つ。この場合は4回((1)〜(3)を4回)集計を実施し、次のブック「XXX」に移行する。 【困っていること】 Forでシート名をなめて”集計データ”の時だけの処理の分岐はできている。 、End(xldown)などを使い最終行の取得はうまくいってるが、 マクロ用ブック”一時”シートにコピー時にエラーがでる。 また、次のブック(固定名)に移行する場合、べた書きの為同じコードを かいてしまう。この場合引数を渡すソースになるが、そこでもエラーになる。 < 使用 Excel:Microsoft365、使用 OS:Windows11 > ---- 各ブックとシート名の指定の仕方があいまいなのでは? (無料) 2024/04/08(月) 16:45:14 ---- 各数十個のデータブック、マクロ用のブックは 同一フォルダー内です。 ブックは固定名で処理は同じなので 引数を渡してブックを指定して処理。 指定があいまいなのかなと確認したんですが・・・VBAが習いたてで困ってます。 現在の記載は 一部省略していますが以下のとおりとなります。 Call Shori 1 'XXXブックの場合 Call Shori 2 'YYYブック '処理 Sub Shori(ByVal BookNo as Intger) Dim ReadPath as String Dim EndRow as Double Dim wb as workbook Dim ExcelApp as New Application Dim Cnt as Long 'カウント Dim i as Long If num Mod 2 = 0 Then if bookNo =1 then ReadPath=Thisworkbook.path & "¥XXX.xlsx") ExcelApp.Visible = false ExcelApp.DisplayAlerts =false Set wb =ExcelApp.Workbooks.Open(ReadPath, True) cnt=wb.worksheets.Count 'シートの数カウント for i to cnt if wb.Worksheets(i).Name Like "*集計データ" then 'B列5番目からデータを参照し最終行を取得 EndRow=wb.Worksheets(i).Cells(5,2).End(xlDown).Row 'ーーーーーーーーーーーーーうまくいってないもの_その1ーーーーーーーーー ここに最終行を取得したので、XXXブックの”集計データ”が含まれたシートにある 最終行を取得したのでA5〜E最終行 の範囲を、マクロ用ブックの”一時”にコピー 'ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 'ーーーーマクロ用ブックにおいて、集計ーーーーー ここで、マクロ用ブックの”一時”シート内でデータのカウントをする その結果をマクロ用ブックの別のシートに転記する '----------------------- else end if next i end sub else bookNo=2 end if (家事手伝い) 2024/04/08(月) 16:57:20 ---- 別インスタンスのエクセルを起動させているように見えるけど それって必要なのかな? 最近のエクセルのことよく知らないけど (無料) 2024/04/08(月) 17:24:53 ---- If num Mod 2 = 0 Then は転記ミスです。 正しくは Call Shori 1 'XXXブックの場合 Call Shori 2 'YYYブック '処理 Sub Shori(ByVal BookNo as Intger) Dim ReadPath as String Dim EndRow as Double Dim wb as workbook Dim ExcelApp as New Application Dim Cnt as Long 'カウント Dim i as Long if bookNo =1 then ReadPath=Thisworkbook.path & "¥XXX.xlsx") ExcelApp.Visible = false ExcelApp.DisplayAlerts =false Set wb =ExcelApp.Workbooks.Open(ReadPath, True) cnt=wb.worksheets.Count 'シートの数カウント for i to cnt if wb.Worksheets(i).Name Like "*集計データ" then 'B列5番目からデータを参照し最終行を取得 EndRow=wb.Worksheets(i).Cells(5,2).End(xlDown).Row 'ーーーーーーーーーーーーーうまくいってないもの_その1ーーーーーーーーー ここに最終行を取得したので、XXXブックの”集計データ”が含まれたシートにある 最終行を取得したのでA5〜E最終行 の範囲を、マクロ用ブックの”一時”にコピー 'ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 'ーーーーマクロ用ブックにおいて、集計ーーーーー ここで、マクロ用ブックの”一時”シート内でデータのカウントをする その結果をマクロ用ブックの別のシートに転記する '----------------------- else end if next i ExcelApp.DisplayAlerts = True '警告メッセージをオン ExcelApp.Quit 'Excel終了 Set ExcelApp = Nothing else bookNo=2 end if end sub (家事手伝い) 2024/04/08(月) 18:01:52 ---- >マクロ用ブック”一時”シートにコピー時にエラーがでる。 その処理をしている部分のコードを提示しなければ、何が問題か分からないですよ。 エラーは何と言うエラーですか? (半平太) 2024/04/08(月) 22:43:58 ---- 何点か確認。 ■1 ↓はどのプロシージャにかいてあるのですか? Call Shori 1 'XXXブックの場合 Call Shori 2 'YYYブック ■2 既に指摘がありますが、↓の狙いはなんですか? Dim ExcelApp as New Application ■3 ↓は省略しているだけで、実際には【Else節】も記述があるのでしょうか? else end if ■4 こちらも指摘がありますが、 'ーーーーーーーーーーーーーうまくいってないもの_その1ーーーーーーーーー ここに最終行を取得したので、XXXブックの”集計データ”が含まれたシートにある 最終行を取得したのでA5〜E最終行 の範囲を、マクロ用ブックの”一時”にコピー 'ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 'ーーーーマクロ用ブックにおいて、集計ーーーーー ここで、マクロ用ブックの”一時”シート内でデータのカウントをする その結果をマクロ用ブックの別のシートに転記する '----------------------- ↑のそれぞれについて、【現状のコードを提示した上で】 ・××の箇所で○○というエラー(エラー番号、エラーメッセージ)が出る ・エラーにはならないが、××になるはずが、○○になってしまう など具体的に説明できませんか? ■余談 コードを手打ちされているようですが、可能であればエディタからコピペされた方がよいです。 タイプミスの指摘はお互い時間の無駄でしょう。 (もこな2 ) 2024/04/09(火) 09:18:09 ---- 追加で。 ■5 コンパイルエラーにならないことしかチェックしてませんが、ざっくり整理すると↓みたいになるのではないでしょうか? Sub 整理() Dim ブック名 As String Dim SH As Worksheet ブック名 = Dir(ThisWorkbook.Path & "¥*.xlsx") Do Until ブック名 = "" If ブック名 <> ThisWorkbook.Name Then '自ブックはxlsmだろうけど一応 With Workbooks.Open(ThisWorkbook.Path & "¥" & ブック名) For Each SH In .Worksheets If SH.Name Like "*集計データ" Then '▼そのシートのB列5番目からB列最後のデータ行を取得し、A列〜E列のデータを一時シートにコピーする。 SH.Range("A5:E" & SH.Cells(5, 2).End(xlDown).Row).Copy ThisWorkbook.Worksheets("一次").Range("A1") 'ーーーーマクロ用ブックにおいて、集計ーーーーー 'ここで、マクロ用ブックの”一時”シート内でデータのカウントをする 'その結果をマクロ用ブックの別のシートに転記する '----------------------- Exit For '「〜集計データ」というシートは1ブックに1つしかないと思うので見つかったら(処理したら)巡回は終了してOK End If Next SH .Close False End With End If ブック名 = Dir(ThisWorkbook.Path & "¥*.xlsx") Loop End Sub ※あくまで、説明用の提示であり完成品プレゼントの意図はありません。 ※「一時」なのか「一次」なのかも含めて、ご自身の環境に合わせてカスタマイズしてください。 ■6 既に述べたように「マクロ用ブックにおいて、集計」の内容がわかりませんが、データのカウントくらいであれば、一旦別シートに貼り付けなくても処理できるのではないでしょうか? どのような集計をするのか、コードのみならず行列を踏まえたレイアウトで サンプルデータを提示して説明いただくとアドバイスできることがあるかもしれません。 (もこな2 ) 2024/04/09(火) 10:33:50 ---- 「■5」で提示したコードに、ブックを閉じる命令が無かったので修正しました。 (もこな2) 2024/04/10(水) 06:27:40 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202404/20240408155929.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97033 documents and 608014 words.

訪問者:カウンタValid HTML 4.01 Transitional