
VBAについて質問です。
定期的にBook1からBook2へコピペする作業があるのですがBook1のシート名(日付)が都度変更されます。
現在以下のようになっています。
Sub 助()
' 助 Macro
Dim FilePath As String
FilePath = ThisWorkbook.Path
Workbooks.Open FilePath & "Book1.xlsx"
Workbooks("Book1.xlsx").Worksheets("2023_10_18").Range("A1:J13").Copy _
Workbooks("Book2.xlsm").Worksheets("sheet1").Range("A1")
Workbooks("Book1.xlsx").Close savechanges:=False
End Sub
上記ですと2023_10_20のシートであれば問題なく動作するのですが当然たの日付だとエラーになります。
ネットで調べたところSheets(1).Selectとすれば良いとの事で上記のWorksheets("2023_10_18")部分をSheets(1).Selectに変更してみたのですがエラーとなってしまいます。
どのように変更すれば良いのでしょうか。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは
>Sheets(1).Selectとすれば良いとの事で~~
それって、「ブックのシートタブの一番左側を選択する」ってことですけれど、ご質問の処理のブックでも「一番左側のシート」で良いのでしょうか?
もしそうであるならば、
>Workbooks("Book1.xlsx").Worksheets("2023_10_18").Range("A1:J13").Copy _
の部分を
Workbooks("Book1.xlsx").Worksheets(1).Range("A1:J13").Copy _
とすればそのようになります。
この場合は、ブック名が日付であろうとなかろうと、一番最初のシートを対象とします。
(ブック内に一つしかシートが存在しないのであれば、これで十分でしょう)
きちんと日付で判断するのならば・・
>Book1のシート名(日付)が都度変更されます。
コピーしたいシートの日付には何らかの特徴があると思いますので、それに基づいて検索すれば良いでしょう。
例えば、
・実行時の日付と一致するシート
・ブック内の一番最新の日付のシート
などなど。
No.3
- 回答日時:
Book1 の日付のシート("2023_10_18")が1つで他にない場合や常にコピーする日付のシートがアクティブになっている場合はシート名を取得すればいいと思います。
Dim N As String
Workbooks.Open FilePath & "Book1.xlsx"
N = ActiveSheet.Name
Workbooks("Book1.xlsx").Worksheets(N).Range("A1:J13").Copy _
・・・
またコピーする日付シートが書き足されていくなどして最終位置にあるならBookのシート数がその数が最終シート番号だから
Dim C As Integer
C = Workbooks("Book1.xlsx").Sheets.Count
Workbooks("Book1.xlsx").Worksheets(N).Range("A1:J13").Copy _
・・・
とすればいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/20 14:46
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 【マクロ】PasteSpecialメソッドにて、コードが動かない理由が分かりません 2 2023/08/15 20:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの複数シートでのリン...
-
SUMIF関数【複数のシート...
-
Excel 全シート上のボタンを削...
-
Excelで条件に一致したものだけ...
-
エクセルで、シートの名前を変...
-
エクセルのシー名を二段表示に...
-
ワークシートそのものの色を変...
-
エクセル 複数シートに入力規...
-
【Excel VBA】データ貼り付け先...
-
Access VBA インポート シート指定
-
エクセル、条件をつけてのデー...
-
DATE関数 4月31日などのあ...
-
アクセスからエクセルのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
確定申告用の医療費集計フォー...
-
エクセルのシー名を二段表示に...
-
EXCELの図形(テキストボックス)...
-
エクセル、特定のシートにパス...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
Accessのテーブルを既存のExcel...
-
EXCELで存在しないシート...
-
エクセルの複数シートでのリン...
-
エクセルのファイルサイズが急...
-
エクセルの2つのシートを並び...
-
エクセルのシート連番の振り直し
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
おすすめ情報