![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
過去に私の質問にお答えいただいた方、大変ありがとうございました。
下記コードにて、途中でエラーが生まれてしまい解決できません...。
やりたいことは、
・fnameに入れた、文字や数字を含むファイルの存在確認
・ある場合に、新しくそのシートを作り名前をつける
・元ブックのB列をデータのある最終行までコピーして
・新しく作成したシートのB1へ値のみ貼り付け
といった感じです。
Option Explicit
Sub sample()
Dim fname As Variant
fname = "404"
Dim csvfile As Variant
csvfile = Dir(ThisWorkbook.path & "/*" & fname & "*.csv")
If csvfile <> "" Then '対象のファイルがあるかどうかの確認
Dim ws As Worksheet '対象のファイルがある場合、シートを追加
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "404エラー"
Dim path As String
Dim wb As Workbook
Dim lastB As Variant
path = ThisWorkbook.path & "/" & csvfile
Set wb = Workbooks.Open(path)
lastB = Cells(Rows.Count, "B").End(xlUp).Select
wb.Worksheets(1).Range(lastB).Copy
ThisWorkbook.Sheets("ws.Name").Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
wb.Close SaveChanges:=False
End If
End Sub
デバッグを見る限り、wb.Worksheets(1).Range(lastB).Copyのあたりで止まってしまうのですが、どうにも自分ではしっくりこず、なぜエラーになってしまうのかご教授いただけると幸いです。
No.2ベストアンサー
- 回答日時:
Dim lastB As Variant
lastB = Cells(Rows.Count, "B").End(xlUp).Select
lastB=True(Boolean)です よってRange(lastB).Copyは1004
ご質問にはありませんが、
>元ブックのB列をデータのある最終行までコピーして
Cells(Rows.Count, "B").End(xlUp).SelectはB列最終行セルのみです
範囲ならRange(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
のようになります
更に
>ThisWorkbook.Sheets("ws.Name").Range("B1")
("ws.Name")は文字列になってしまいます
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "404エラー"
としているのなら
ws.Range("B1") や
ThisWorkbook.Sheets(ws.Name).Range("B1")
該当部分 2通りの例(やりたい事から推測
Dim ws As Worksheet '対象のファイルがある場合、シートを追加
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "404エラー"
Dim path As String
path = ThisWorkbook.path & "/" & csvfile
With Workbooks.Open(path)
.Range(.Cells(1, "B"), .Cells(Rows.Count, "B").End(xlUp)).Copy
ws.Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Close SaveChanges:=False
End With
End If
End Sub
2例目 .Value=.Value
Dim path As String
Dim wb As Workbook
Dim lastB As Range
path = ThisWorkbook.path & "/" & csvfile
Set wb = Workbooks.Open(path)
Dim ws As Worksheet '対象のファイルがある場合、シートを追加
Set ws = Worksheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "404エラー"
'Sheets.Addで対象がアクティブになっているのでシートオブジェクトを省略
Set lastB = Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
ws.Range("B1").Resize(lastB.Count).Value = lastB.Value
wb.Close SaveChanges:=False
End If
End Sub
*気になる点
Worksheetとsheetは違います
理解した上でSheetsを使っているのなら良いですが
よくわからずであれば、調べてみてください。
No.3
- 回答日時:
#2
すみません訂正します
1例目 .Range(.Cells(1, "B"), .Cells(Rows.Count, "B").End(xlUp)).Copy
は Withでシートを示していない為、下記のようになります
Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp)).Copy
CSVファイルをExcelで開いているようなのでシートは必ず1シートで
2例目同様にActiveSheetを省略しています
Withを使いたかったのですがあまり(出番のない)良くない例でした
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Excel(エクセル) Rangeメソッドは失敗しました。globalオブジェクトについて 6 2021/11/21 21:54
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
最初の起動時から・・・
-
ワードがなかなか閉じないです
-
localhostで表示されない
-
ギガファイル便って女の人のエ...
-
TSファイルをスムーズに再生したい
-
勝手にdatファイルになるのです...
-
サーバーに転送したファイルが0...
-
[ブロック解除]の方法が知りた...
-
Googleドライブに保存するとPC...
-
STKファイル開き方
-
Internet ExplorerとOutlook Ex...
-
ファイルが勝手にダウンロード...
-
ホームページビルダーで作成し...
-
ホームページビルダーで(一部...
-
PDFファイルをホームページ...
-
サーバーを開こうとすると「サ...
-
ファイルのURLってどこに書いて...
-
ドライバーをダウンロードした...
-
mp3のビットレートを上げたい
-
Windows Media Player 位置ス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
急にXMLパースエラーが表示され...
-
ホームページビルダーの【×】マ...
-
コンパイル時のエラーについて...
-
ワードがなかなか閉じないです
-
VB6 使用中ファイルの確認
-
ftp_getできない?
-
エクセルVBA インデックスが有...
-
[TeX,DVI,PS,PDF]
-
ファイルopenエラーになってし...
-
Excelのハイパーリンクがエラー...
-
local by flywheelについて
-
韓国に送った添付ファイルexcel...
-
DellのHPが開かない!!
-
VBSでごみ箱に捨てたファイルの...
-
Irvineフリーのプロトコルエラ...
-
VBAのエラーについて教えてくだ...
-
thunderbardでエラーが出ます。
-
緊急です。 パワーポイントで p...
-
iPhoneが復元出来ない(不明エラ...
-
フォルダの削除について
おすすめ情報