はじめましてほぼ初心者に近い者なのですが
VBAの条件式のことで質問がありまして
※ コードの内容はgooで回答いただいていたコードを使わせてもらい、少しだけ変更したものです。申し訳ありません。
以下のマクロ
'-----------------------------------------------------------
Sub CSV_READ()
Dim MyObj As Object
Dim MyFol As String
Dim MyFnm As String
Dim MyStr As String
Dim i As Long
Dim n As Long
Dim n1 As Long
'フォルダを選択する
Set MyObj = CreateObject("Shell.Application") _
.BrowseForFolder(0, "SelectFolder", 0)
'選択なければ処理を抜ける
If MyObj Is Nothing Then Exit Sub
MyFol = MyObj.self.Path & "\"
MsgBox MyFol & "を処理します。"
Set MyObj = Nothing
Application.ScreenUpdating = False
'データ読み込みシートを選択
Sheets("ツール").Select
With Sheets("ツール")
'Dir関数を使って指定フォルダ内csvファイルを順次処理
MyFnm = Dir(MyFol & "*.csv")
Do Until Len(MyFnm) = 0&
i = i + 1
'データエリアを取得してセット先を変更
n = IIf(n = 0, 1, n + n1)
'外部データ取り込みを利用
With .QueryTables.Add(Connection:="TEXT;" & MyFol & MyFnm, _
Destination:=.Range("A" & n))
.AdjustColumnWidth = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 2
.TextFileCommaDelimiter = True
.Refresh False
n1 = .ResultRange.Rows.Count
.Parent.Names(.Name).Delete
.Delete
End With
'次のファイルへ
MyFnm = Dir()
Loop
End With
If i > 0 Then
MyStr = i & "個のファイルを処理しました。"
Else
'検索結果が0なら
MyStr = "検索条件を満たすファイルはありません。"
End If
'-------------------------------------------------------------------
'処理2
'-------------------------------------------------------------------
' 別シートに反映
Range("M2:M3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("C4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("E2:E3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("D4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("F2:F3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("E4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("C2:C3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("G4").Select
ActiveSheet.Paste
Application.ScreenUpdating = True
MsgBox MyStr
End Sub
'-----------------------------------------------------------
以上
'-----------------------------------------------------------
こちらを実行するとダイアログが出現しCSVファイルのみが格納されているフォルダまで進め、
フォルダ指定することで中のCSVファイルの中身のセルを全てを連結させて表示し
指定行だけをコピーして別シートの指定セルに貼り付けするという繰り返しマクロなのですが、
私が知りたいことは
CSVファイルが格納されているフォルダ
A-TESTフォルダ
B-TESTフォルダ
C-TESTフォルダ
D-TESTフォルダ というように
A-TESTフォルダを指定すると上の処理2欄を実行し
B-TESTフォルダを選択すると
("C4")←貼り付け先を("E4")にする。
("D4")の箇所を⇒("F4")に。
というような感じのCase文?で作ることができる条件式をご教授頂きたいのですが
書き方に行き詰ってしまい困っております。
どこか説明不足や、質問内容がわかりにくいかもしれません。。。。
長々となってしまいお手数お掛けしますがご意見お待ちしております。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
いろいろな方法があるかと思いますが、
できる限り、同じ処理を記述しないよう、貼り付け先を変数にしてみました。
Dim Pasterange1 As String
Dim Pasterange2 As String
Select Case MyFol
Case "A-TEST"
Pasterange1 ="C4"
Pasterange2 ="D4"
Case "B-TEST"
Pasterange1 ="E4"
Pasterange2 ="F4"
Case "C-TEST"
Pasterange1 ="G4"
Pasterange2 ="H4"
End Select
'処理2改良
別シートに反映
Range("M2:M3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range(Pasterange1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("E2:E3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range(Pasterange2).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("F2:F3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("E4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("C2:C3020").Select
Selection.Copy
Sheets("Sheet2").Select
Range("G4").Select
ActiveSheet.Paste
Application.ScreenUpdating = True
MsgBox MyStr
End Sub
返事遅くなりました。
上記の貼り付け先を変数に変えて試してみたのですが
Range(Pasterange1).Select
の箇所で 'Range' メソッドに失敗しました:'_Global'オブジェクト
とゆうエラーが発生しまして
対処方法に困っています><;
すいません。。もう一度ご教授お願います;;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
Thunderbirdで社内共有フォルダ...
-
binフォルダーとは?
-
パソコンのフォルダー内のファ...
-
バッチファイルでサーバーのフ...
-
一括でフォルダと同じ名前にフ...
-
同名のフォルダを検索・削除したい
-
ファイルのサイズを0にする or ...
-
一太郎がイントラで開けません...
-
一定のファイル数ごとにフォル...
-
コマンドプロンプトでフォルダ...
-
特定フォルダ内のファイルを自...
-
動画(VOB)ファイルをDVD-R...
-
win10の「フォト」で、「次へ」...
-
ビルダーを使ってますがパソコ...
-
フォルダ内で、一致するファイ...
-
「ファイルがオープンできませ...
-
名前の変更ができない動画ファイル
-
コマンドプロンプトで日本語の...
-
複数のフォルダに複数のファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
Thunderbirdで社内共有フォルダ...
-
パソコンのフォルダー内のファ...
-
binフォルダーとは?
-
PCのアプリケーションを別のPC...
-
バッチファイルでサーバーのフ...
-
virualboxで仮想マシンフォルダ...
-
画像・動画データを日付毎のフ...
-
ファイルのサイズを0にする or ...
-
win10の「フォト」で、「次へ」...
-
コマンドプロンプトでフォルダ...
-
一括でフォルダと同じ名前にフ...
-
一太郎がイントラで開けません...
-
ビルダーを使ってますがパソコ...
-
同名のフォルダを検索・削除したい
-
名前の変更ができない動画ファイル
-
拡張子が異なりファイル名が同...
-
「ファイルがオープンできませ...
-
Fast Copy と Fire File Copy ...
-
2つのフォルダ内(サブフォルダ...
おすすめ情報