一部抜粋
Sheets("入力").Range("A2:AG500").Copy
→ここが500行までになっているので、A列のデータが入っているところまでをコピーとしたいのです。ご教授くださいです。
Sub データ取り込み()
Dim buf As String, i As Long
Dim j
buf = Dir(Sheets("book保存場所").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("book保存場所").Range("A1").Value & "\" & buf
Sheets("入力").Range("A2:AG500").Copy
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Workbooks(buf).Activate
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
No.3ベストアンサー
- 回答日時:
No.2 の訂正です。
タイトル行のようなものが有ったんですね。「For r = Sheets("入力").Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1」を「For r = Sheets("入力").Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1」に修正してください。申し訳ございません。迅速なご対応かつ、追加でスペース分も教えてくださりありがとうございます。
おかげ様で出来ました!!
パパッと出来ちゃうなんてすごいですね!!!
無理だと思いますが、色々教わりたい!!と思う次第です。
No.2
- 回答日時:
こんなのはいかがでしょうか?
----------------------------------------------------------------------------------------------
Sub データ取り込み()
Dim buf As String, i As Long
Dim j
Dim r As Long
buf = Dir(Sheets("book保存場所").Range("A1").Value & "\*.xls")
Do While buf <> ""
Workbooks.Open Worksheets("book保存場所").Range("A1").Value & "\" & buf
For r = Sheets("入力").Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Sheets("入力").Cells(r, 1).Text <> "" Then Exit For
Next
Sheets("入力").Range("A2:AG" & r).Copy
ThisWorkbook.Activate
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Workbooks(buf).Activate
Application.CutCopyMode = False
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
----------------------------------------------------------------------------------------------
なお、スペースだけの物も除外したいのならば「If Sheets("入力").Cells(r, 1).Text <> "" Then Exit For」を「If Trim(Sheets("入力").Cells(r, 1).Text) <> "" Then Exit For」に変えてください。
No.1
- 回答日時:
「Sheets("入力").Range("A2:AG500").Copy」を「Sheets("入力").Range("A2:AG" & Sheets("入力").Cells(Rows.Count, 1).End(xlUp).Row).Copy」でいかがでしょうか?
また「Range("A65536").End(xlUp).Offset(1, 0).Select」は Excel2003 まではこれで良いのですが Excel2007 以降も対応させるならば「ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select」にしてください。
ありがとうございます。また追加で教えていただき感謝しております。
早速試させていただいたのですが、コピー元のデータが500行まで数式が入ってるからなのでしょうか、やはり2つ目のExcelのデータは501行からコピーされます。
数式が入っていても値がある行だけコピーして値貼り付けすることは可能でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
inputとenterの違い
-
エクセルVBAでTargetのセルに設...
-
Excelが勝手に閉じてしまって困...
-
認証コードが入力できない(同...
-
マンション名のローマ数字入力...
-
エクセル 時間を.(ドット)で...
-
左向きにエクセルで作成され申...
-
ヤフーファイナンスのログイン
-
VLOOKUP関数で返した値(カタカ...
-
エクセルVBA、入力しないと閉じ...
-
至急 奨学金のスカラネットで識...
-
キーボードにロックがかかり、...
-
パソコンでタスクバーの入力モ...
-
個人情報入力の手間をはぶきたい
-
キー入力がおかしい・・・・
-
初歩的なことなんですが。produ...
-
Excelにて入力済セルへの再入力...
-
【キーボード】母音しか打てない…
-
エクセルマクロ セルをクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで英数大文字のみの入...
-
マンション名のローマ数字入力...
-
Apple IDの作成ができない。「...
-
認証コードが入力できない(同...
-
Excelが勝手に閉じてしまって困...
-
エクセルVBAでTargetのセルに設...
-
inputとenterの違い
-
Windows 画像サイズ変更
-
Excelにて入力済セルへの再入力...
-
左向きにエクセルで作成され申...
-
エクセル 時間を.(ドット)で...
-
ifで10個以上の条件判断がしたい
-
VLOOKUP関数で返した値(カタカ...
-
初歩的なことなんですが。produ...
-
エクセルVBA、入力しないと閉じ...
-
エクセルで音声入力がしたい。
-
カスペルスキーのダウンロード...
-
teratermでユーザー変更したい
-
コマンドプロンプトで文字列比...
-
【Excel】 一つのファイルで、2...
おすすめ情報
コピー元データのA行には数式が入っており、見た目はブランクでも数式が入力されています。