Excel VBA質問箱 IV

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

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


4 / 3840 ページ ←次へ | 前へ→

【82392】1フォルダ複数ブックExcelを指定した行切...
質問  いい E-MAIL  - 24/10/17(木) 18:40 -

引用なし
パスワード
   以下のVBAを組みたいのですが、どうすれば良いかわからずご協力いただきたいです

●やりたい事(流れ)

・1つのフォルダに複数のExcelブック有
 フォルダ_リスト1.xlsx
     _リスト2.xlsx
     _リスト3.xlsx
     _リスト4.xlsx
      ・・・・

・リスト内の指定した行数を別ブックに移動させたい
 例「10行と設定」

 ⑴リスト1.xlsx 1〜10行→新ブックAにコピー
 ⑵リスト2.xlsx 1〜10行→⑴のコピーした下にコピー
 ⑶リスト3.xlsx 1〜10行→⑵のコピーした下にコピー
 ⑷リスト4.xlsx 1〜10行→⑶のコピーした下にコピー
 ⑸リスト1.xlsx 11〜21行→⑷のコピーした下にコピー
 ⑹リスト1.xlsx 11〜21行→⑸のコピーした下にコピー
 …リスト内のデータが無くなったら完了

・最終
 1つのExcelブックになる

・補足
 リスト内の最終行はブックことに異なる
 
 
        
・ツリー全体表示

【82391】Re:複数のエクセルブックからデータを取...
お礼  ぺろ  - 24/10/12(土) 22:31 -

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

ご教示ありがとうございました。
教えていただいたコードにて無事思った通りの処理が行えました。
説明不足等ありましたが、詳しく教えていただき助かりました。
・ツリー全体表示

【82390】Re:複数のエクセルブックからデータを取...
発言  マナ  - 24/10/10(木) 7:51 -

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

Sub test()
  Dim fdg As FileDialog, p As String
  Dim wsDB As Worksheet, k As String, fn As String
  Dim ws As Worksheet

  Set fdg = Application.FileDialog(msoFileDialogFolderPicker)
  If Not fdg.Show Then Exit Sub
  p = fdg.SelectedItems(1) & "\"
  
  Set wsDB = ThisWorkbook.Worksheets("DB")
  k = wsDB.Range("B2").Value
  
  fn = Dir(p & "*" & k & "*.xlsm")
  Do While fn <> ""
    Set ws = Workbooks.Open(p & fn).Worksheets("請求書")
    ws.Range("A18:E38").Copy
    wsDB.Range("B" & Rows.Count).End(xlUp).Offset(1, -1) _
      .PasteSpecial xlPasteValues
    ws.Parent.Close False
    fn = Dir()
  Loop
  
End Sub
・ツリー全体表示

【82389】Re:複数のエクセルブックからデータを取...
回答  ぺろ  - 24/10/9(水) 22:32 -

引用なし
パスワード
   ▼マナ さん:
>
>1)転記する行はB列が空白かどうかで判断してよいですか
    転機行の空白判断はB列で判断して頂いて問題ございません。
>2)記元、転記先のシート名を教えて下さい
    転機元のシート名は請求書、転機先のシート名はDBとなります。
>3)エクセルのバージョンを教えて下さい
    エクセルバージョンはExcel2013です。

よろしくお願いいたします。
・ツリー全体表示

【82388】Re:複数のエクセルブックからデータを取...
発言  マナ  - 24/10/9(水) 21:32 -

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

1)転記する行はB列が空白かどうかで判断してよいですか
2)記元、転記先のシート名を教えて下さい
3)エクセルのバージョンを教えて下さい
・ツリー全体表示

【82387】Re:複数のエクセルブックからデータを取...
回答  ぺろ  - 24/10/9(水) 19:39 -

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

ご返信ありがとうございます。
転記元ブックとして以下のような独立したブックがあり、各ブックに値があるとします

  転記元1    転記元2     転記元3    
  A B C D E   A B C D E   A B C D E
18  7 7 7 7  18  0 0 0 0  18  Z Z Z Z
19  V V V V  19  1 2 3 4  19  X X X X    
20  X X X X  20  5 6 7 8  20  V V V V    
21  9 9 9 9  21  3 3 3 3  …    
22  0 0 0 0  22  4 4 4 4 
…        23  5 5 5 5
        24  6 6 6 6
        …        
        
このデータを開いているブック(転記先)にコピーし以下の形でまとめたいです。    
                
  転記先                
  A B C D E
18  7 7 7 7
19  V V V V    
20  X X X X    
21  9 9 9 9    
22  0 0 0 0 
23  0 0 0 0
24  1 2 3 4
25  5 6 7 8
26  3 3 3 3
27  4 4 4 4
29  5 5 5 5
30  6 6 6 6
31  Z Z Z Z
32  X X X X
33  V V V V


セルAに値が入る事は殆どありません。                     
・ツリー全体表示

【82386】Re:複数のエクセルブックからデータを取...
発言  マナ  - 24/10/9(水) 18:26 -

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

>値の上書きを行う状態ではなく、空白セルを取得しそこに値を追加していく形で全ての値を保持して1つのブックとしてまとめていければと思っております。

具体例をあげて説明してください。
・ツリー全体表示

【82385】Re:複数のエクセルブックからデータを取...
回答  ぺろ  - 24/10/9(水) 16:32 -

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

説明が下手で申し訳ありません。
値の上書きを行う状態ではなく、空白セルを取得しそこに値を追加していく形で全ての値を保持して1つのブックとしてまとめていければと思っております。
・ツリー全体表示

【82384】Re:複数のエクセルブックからデータを取...
発言  マナ  - 24/10/9(水) 15:39 -

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

転記元のブックが2つ以上あったとして、
同じセルにデータが入力されていると、
あとから転記した値で上書きされてしまいますが
問題ないのでしょうか
・ツリー全体表示

【82383】複数のエクセルブックからデータを取得し...
質問  ぺろ  - 24/10/9(水) 10:25 -

引用なし
パスワード
   以下内容でご教授いただきたく質問させていただきます。

行いたい事
転記先シートB3(開いているブック)に入力されている文字が保存名にあるxlsmファイルを検索して開く。
一致するファイルがある場合セルA18〜E38の間のデータが入力されている部分のみをコピーし転記先シートのA18〜E38セルへコピー。
転記元ファイル数、転記データの行数が異なる為、転記時に転記先シートのデータがないセルにコピーを行う。
一致するファイルがなくなるまで以上の処理を繰り返す。

ファイルの検索方法、データの貼り付け位置指定の手段が思いつかない為質問させていただきました。
仕様に関してアドバイスの程、よろしくお願いいたします。

Sub データ収集()

  Dim FolderPath As String, Filename As String, ws As Worksheet

    ' 転記元ファイルがあるフォルダのパスを指定
  FolderPath = ("転記元フォルダ")

    ' 拡張子が.xlsmのファイルを検索
  Filename = Dir(FolderPath & "*.xlsm")
    
  While Filename <> ""
    Workbooks.Open FolderPath & Filename ' 転記元ファイルを開く
    For Each ws In ActiveWorkbook.Sheets(1) ' 転記元のシートを指定
      ws.UsedRange.Copy ThisWorkbook.Sheets(DB).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) ' 転記先のシートを指定
    Next ws
    Workbooks(Filename).Close SaveChanges:=False
    Filename = Dir
  Wend

    'コピー指定解除
  Application.CutCopyMode = False

End Sub
・ツリー全体表示

【82382】Re:D列において括弧がついているデータの...
お礼  すぺぺぺ  - 24/10/5(土) 19:05 -

引用なし
パスワード
   ▼マナ様

大変お手数おかけいたしました。
教えていただきましたコードで問題なく動作しておりました。

エラーが出てしまった原因として、コードを眺めていた際に余計なキーを押してしまっており、文字が入力されてしまっていた事が原因でした。

ありがとうございました。
・ツリー全体表示

【82381】Re:D列において括弧がついているデータの...
回答  すぺぺぺ  - 24/10/5(土) 15:46 -

引用なし
パスワード
   ▼マナ様

先ほど添付していただいたデータではエラー無く思った通りの動作をしておりました。
実際に使うデータにて改めて試してみます。
・ツリー全体表示

【82380】Re:D列において括弧がついているデータの...
発言  マナ  - 24/10/5(土) 8:51 -

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

まずは下記データで試してみてください

   A  B  C  D

2 あ  い  う  え(いろは)
3 1  2  3  4

   
・ツリー全体表示

【82379】Re:D列において括弧がついているデータの...
回答  すぺぺぺ  - 24/10/5(土) 2:57 -

引用なし
パスワード
   ▼マナ様

コピペしてそのまま使用させて頂いております。
動作環境のソフトはOffice 2019です。
・ツリー全体表示

【82378】Re:D列において括弧がついているデータの...
発言  マナ  - 24/10/4(金) 23:22 -

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

コピペして、そのまま使用していますか。
それとも、どこか修正していますか。
・ツリー全体表示

【82377】Re:D列において括弧がついているデータの...
質問  すぺぺぺ  - 24/10/4(金) 22:18 -

引用なし
パスワード
   ▼マナ 様

早速のご返答ありがとうございます。
最終行のコード
r.Resize(a.Count).Value = Application.Index(a.toarray, 0, 0) ここの部分にて型が一致しませんとエラーがでてしまうのですが、記載ミス等ございますでしょうか
・ツリー全体表示

【82376】Re:D列において括弧がついているデータの...
発言  マナ  - 24/10/4(金) 22:02 -

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

Sub test2()
  Dim a As Object
  Dim r As Range
  Dim w, v, k As Long
  Dim s As String, n As Long

  Set a = CreateObject("system.collections.arraylist")
  
  Set r = Range("A1", ActiveSheet.UsedRange).Offset(1).Resize(, 4)
  w = r.Value
  For k = 1 To UBound(w)
    v = Application.Index(w, k, 0)
    a.Add v
    s = v(4)
    If s Like "?*[((]?*[))]" Then
      n = InStr(Replace(s, "(", "("), "(")
      v(4) = Left(s, n - 1)
      a(a.Count - 1) = v
      a.Add Array(Mid(s, n), Empty, Empty, Empty)
    End If
  Next
  r.Resize(a.Count).Value = Application.Index(a.toarray, 0, 0)

End Sub
・ツリー全体表示

【82375】Re:D列において括弧がついているデータの...
質問  すぺぺぺ  - 24/10/4(金) 16:13 -

引用なし
パスワード
   ▼マナ 様

度々申し訳ありません。
改行ではなく挿入の伝え間違えです。
元のデータの下段にセルを挿入し、挿入したA列のセルにDから分割したデータの移動が行いたいのですが…

お返事いただいたコードを実行し、使用したい部位の移動はできるのは確認いたしましたが、改行コードに変更したところうまく動作しない為ご返信させて頂きました。
・ツリー全体表示

【82374】Re:D列において括弧がついているデータの...
発言  マナ  - 24/10/4(金) 10:06 -

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

v(k, 1) = v(k, 1) & vbLf & Mid(s, n)
・ツリー全体表示

【82373】Re:D列において括弧がついているデータの...
質問  すぺぺぺ  - 24/10/3(木) 19:47 -

引用なし
パスワード
   ▼マナ 様

説明不足で申し訳ありません。
先日教えて頂きました分割のコードにて教えて頂きたい事があり書き込みさせて頂きます。

セルA〜Dの1,2行に下記のようなデータが入力されております。
A  B  C  D
1 あ い う  え(いろは)
2 1 2 3 4

教えて頂いたコードを実行すると括弧内の文字は移動はするのですが改行は行われず、
セルAのデータが消えセルDの括弧部分と置き換わり下記の状態になってしまいます。
 A    B  C  D
1(いろは) い  う  え
2 1   2  3 4

VBA実行後にD列の括弧を含め、D列の文字をA列に改行し挿入する場合はどのようにすればよいでしょうか。
以下のような状態の並びにしたいのですが・・・
  A  B  C  D
1 あ  い  う  え
2(いろは)
3 1  2  3  4
・ツリー全体表示

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