マクロでCSVファイルを取込むプログラムを作成しております。
最終行を取得するソースまではできたのですが、最終列を取得する処理ができておりません。
教えて頂けないでしょうか。
処理概要
(1)ボタンを押したら、Sheet2にCSVファイルがインポートされる
(2)Sheet2に出力されたA2行~A8行とA2行~A8行の最終列までをSheet1のD4行~D10行、D4行~D10行の列にコピー
(3)Sheet2に出力されたA9行目はコピーしない
(4)Sheet2に出力されたA10行以降とA10行以降の最終列までをSheet1のA13行以降の最終列までにコピー
現在のソースは(2)、(4)の最終列を取得するソース以外はできています。
(2)、(4)の最終列を取得し、コピーする方法を教えて下さい。
現在のソースです。
Sub READ_TextFile()
Dim LoadFileName As String
Dim LR As Long
'選んだcsvファイルをSheet1に読み込む
LoadFileName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "読み込むcsvファイルを選んで下さい", False)
If LoadFileName = "False" Then Exit Sub
Workbooks.Open LoadFileName
Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1")
ActiveWorkbook.Close False
'Sheet2のA2:A8をSheet1のD4を先頭セルとする範囲にCopy
Worksheets("Sheet2").Range("A2:A8").Copy Worksheets("Sheet1").Range("D4")
'Sheet2のA列のデータのある最終行を取得しLRという変数に入れる
LR = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
'Sheet2のA10からA列の最終行までをSheet1のA13を先頭セルとする範囲にCopy
Worksheets("Sheet2").Range("A10:A" & LR).Copy Worksheets("Sheet1").Range("A13")
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
2:8行の最終セルと10行以降の最終セルをきっちりと分けて判定する必要がある場合は
Sub test()
Dim r As Range
Dim rr As Range
With Worksheets("Sheet2")
Set r = .Rows("2:8").Cells
'2:8行間の最終列のセルを取得
Set r = r.Find(What:="*", _
After:=r(1), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchByte:=False)
If Not r Is Nothing Then
If r.Column >= .Columns.Count - 3 Then
MsgBox "error"
Else
Set r = .Range("A2:A8").Resize(, r.Column)
MsgBox r.Address
End If
End If
'10行以降のデータ範囲を取得
Set r = Intersect(.Rows("10:" & .Rows.Count), .UsedRange)
If Not r Is Nothing Then
'念のためA10起点でSetし直し
Set r = .Range("A10", r.Cells(r.Count))
'10行以降のデータ範囲内の最終列のセルを取得
Set rr = r.Find(What:="*", _
After:=r(1), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchByte:=False)
Set r = r.Columns(1).Resize(, rr.Column)
MsgBox r.Address
End If
End With
End Sub
..こんな感じになりますが
アバウトで構わなければ
Sub test2()
Dim r As Range
With Worksheets("Sheet2")
Set r = .UsedRange.SpecialCells(xlCellTypeLastCell)
MsgBox .Range("A2:A8").Resize(, r.Column).Address
If r.Row > 9 Then
MsgBox .Range("A10", r).Address
End If
End With
End Sub
..これで良い場合もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
csvファイル 項目数取得
Visual Basic(VBA)
-
Csvファイルの最終行を取得する構文はこれであっていますか?オブジェクトは、このプロパティまたはメソ
Visual Basic(VBA)
-
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
-
4
最終行の改行について
Visual Basic(VBA)
-
5
vbsで最後の行を削除する
その他(プログラミング・Web制作)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
8
EXCEL(VBA) 末尾の改行のみ削除したい
Excel(エクセル)
-
9
ReadLineでの読み出し行を指定する
Visual Basic(VBA)
-
10
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
13
お助けください!VBAのファイル名エラーについて
Visual Basic(VBA)
-
14
VBS Bookを閉じるコード
Visual Basic(VBA)
-
15
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
エクセルVBA シートモジュール...
-
データグリッドビューの一番最...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
vbaでシートより100より大きい...
-
Changeイベントでの複数セルの...
-
VBA UserFormからの転記で
-
VBA 値と一致した行の一部の列...
-
【VBA】2つのシートの値を比較...
-
エクセルVBAにて =A1=B1とすれ...
-
targetをA列のセルに限定するに...
-
VBA 何かしら文字が入っていたら
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報