いつもお世話になります。
"Book1.csv"が立ち上がっている状態で、同フォルダ内の"Book1.xls"を開き、その瞬間に、"Book1.csv"のA・B列の情報を、"Book1.xls"にコピーしたいのです。
自分でも試してみたのですが、何故か起動しません。
VBAを立ち上げ、ThisWorkbookのところに、
Private Sub File_Open()
Windows("Book1.csv").Activate
d = Range("A1").CurrentRegion.Rows.Count
Range("A2:B" & d).Copy
Windows("Book1.xls").Activate
Range("B4").PasteSpecial Paste:=xlValues
End Sub
としたのですが・・・。
この構文の問題点もご指摘いただけましたら幸いです。
No.2ベストアンサー
- 回答日時:
#1です。
補足させて下さい。ThisWorkbook の Workbook_Open イベントのほか、標準モジュールに Auto_Open という名前でプロシージャを作成すると、ブックの起動時に自動実行されます。以下にサンプルコードをアップしてみます。
Book1.csvが開かれていない場合の例外処理を加えました。
また、値のコピー貼り付けでしたら、 Copy ~ Paste という書き方もOKなのですが、
Range("A1").Value = Range("B1").Value
という書き方も出来ます。この時、複写元のセル領域と転記先のセル領域が異なるとエラーになりますので、Resize でセル領域をそろえます。
値の転記について、どちらの手法が良いかは処理内容によります。
ご参考までに。
Sub Auto_Open()
Dim D As Long
Dim rngOrg As Range
Application.ScreenUpdating = False
On Error Resume Next
Windows("Book1.csv").Activate
If Err.Number <> 0 Then
MsgBox "Book1.csvが開かれていません", vbCritical, "エラー"
On Error GoTo 0
Exit Sub
Else
On Error GoTo 0
'Book1.csv
D = Range("A1").CurrentRegion.Rows.Count
Set rngOrg = Range("A2:B" & D)
'Book1.xls
ThisWorkbook.Activate
With rngOrg
Sheets("Sheet1").Range("B4") _
.Resize(.Rows.Count, .Columns.Count).Value = _
rngOrg.Value
End With
End If
Set rngOrg = Nothing
End Sub
ご丁寧に補足までしていただきまして、ありがとうございます。
よくよく考えてみますと、CSVファイルが立ち上がっていない状態も考えられますので、ぜひ使用させていただきます。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
>問題点もご指摘いただけましたら幸いです。
問題点ということでしたら、そのコードが、ThisWorkbookにあるからです。
たぶん、最初に、記録マクロで、標準モジュールにあったもので、それをThisWorkbook 側にコピペしたのだと思います。
ThisWorkbook は、すでに、Book1.xls の属性に入っていますから、そこから、そのままでは、他のExcelのWindowsを指定できないはずです。
Application.Windows("Book1.csv").Activate
などと、親から指定してあげないといけないと思います。
ただ、Windows("ブック名")のは、そのブックの名前と一般的に一致している、というだけですから、Workbooks で指定したほうがよいです。
以下は、なるべく、そのままのコードを活かすようにして直してみましました。
Private Sub File_Open()
Dim wb As Workbook
Dim wbCsv As Workbook
Dim d As Long
'ブック名(パスがあればパスを含む)
On Error GoTo ErrHandler
Set wbCsv = Workbooks("Book1.csv")
Set wb = Workbooks("Book1.xls")
wbCsv.Activate
d = Range("A1").CurrentRegion.Rows.Count
wbCsv.Worksheets(1).Range("A2:B" & d).Copy
wb.Activate
wb.Worksheets(2).Range("B4").PasteSpecial Paste:=xlValues
'クリップボードに入っているメッセージを出さないで閉じる
Application.DisplayAlerts = False
wbCsv.Close
Application.DisplayAlerts = True
Set wbCsv = Nothing
Set wb = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Number & ": (" & Err.Description & ")"
End Sub
ご丁寧にありがとうございます。
今回初めてThisWorkBOOkを使ったので、勝手が分からず、教えていただきました件につきましては、非常に助かりました。
No.1
- 回答日時:
一行目を次のように変更してみてください。
Private Sub Workbook_Open()
余談ですが、
Windows("Book1.xls").Activate
Range("B4").PasteSpecial Paste:=xlValues
でペーストする際にはシートを指定した方が良いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
ユーザーフォームの切り替えに...
-
VBAで別のブックにシートをコピ...
-
VBA 別ブックからコピペしたい...
-
Excel2007VBAファイルの表示に...
-
vbaでvbaProjectのパスワード解...
-
vbaで他のブックに転記したい。...
-
拡張メタファイルにて貼り付け
-
【VBA】全シートの計算式を全て...
-
エクセルマクロで、他ブックか...
-
【ExcelVBA】インデックスが有...
-
エクセル vba ある検索値を別ブ...
-
Excelマクロ 該当する値の行番...
-
VBA コードを実行すると画面が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
【マクロ】AブックからBブック...
-
【ExcelVBA】インデックスが有...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBS Bookを閉じるコード
-
VBAで別のブックにシートをコピ...
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
[Excel]ADODBでNull変換されて...
-
VBAで複数のブックを開かずに処...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
vbaでvbaProjectのパスワード解...
おすすめ情報