[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロの記録で記録したマクロを加工したい』(aoi)
こんばんわ aoiです。
マクロの記録で記録したマクロを少し加工したのですが、途中でエラーが出てその先へ進めません。 下記は記録したマクロを、少し加工したものです。
Sub Macro1() MyDate = Format(Date, "YY.MM.DD") ChDir "C:\Users\User\Desktop" Workbooks.Open Filename:="C:\Users\User\Desktop\あああ_" & Format(Now() - 1, "yyyymmdd") & ".xlsx" Sheets("Sheet1").Select Sheets("Sheet1").Name = "あああ_" & Format(Now() - 1, "yyyymmdd") Sheets("あああ_ & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1) Range("A34").Select ActiveCell.FormulaR1C1 = "=SUM(RC[2]:RC[10])" Sheets("原紙").Select Range("B3").Select End Sub
やりたい事は、あああというブックのSheet1を「あああ_20150122」(前日の日付)という名前に変えて、 あいうえおというブックの末尾に移動させ、C34:K34をオートSUMで計算してその後原紙という名前のシートのB3セルを選択するというものです。
Sheets("あああ_ & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1) この部分で構文エラーが出てしまうのですがどの様にすればいいか教えて下さい。
宜しくお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
Sheets("あああ_ & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1)
↓ではどうなりますか?
Sheets("あああ_" & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1) (カリーニン) 2015/01/23(金) 22:41
Date
で本日の日付を取得できます。
Date -1
で昨日の日付になります。 (カリーニン) 2015/01/23(金) 22:43
>Workbooks("あいうえお.xlsm").Sheets(1)
ここは
Workbooks("あいうえお.xlsm").Worksheets(Workbooks("あいうえお.xlsm").Worksheets.Count)
とした方がいいかもしれません。 (カリーニン) 2015/01/23(金) 22:49
Sheets("あああ_" & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1) にしても、同じくコンパイルエラーが発生して同じ状態でした。
次に、 Date -1ですが、↓の様にしてみたところ、 Sub Macro1() MyDate = Format(Date, "YY.MM.DD") ChDir "C:\Users\User\Desktop" Workbooks.Open Filename:="C:\Users\User\Desktop\あああ_" & Format(Now() - 1, "yyyymmdd") & ".xlsx" Sheets("Sheet1").Select Sheets("Sheet1").Name = "あああ_" & Format(Now() - 1, "yyyymmdd") Sheets("あああ_" & Date - 1).Move After:=Workbooks("あいうえお.xlsm").Sheets(1) Range("A34").Select ActiveCell.FormulaR1C1 = "=SUM(RC[2]:RC[10])" Sheets("原紙").Select Range("B3").Select End Sub
実行時エラー'9’インデックスが有効範囲にありません。と表示されます。
次に、 Workbooks("あいうえお.xlsm").Worksheets(Workbooks("あいうえお.xlsm").Worksheets.Count) としてみても
実行時エラー'9’インデックスが有効範囲にありません。と表示されます。 入力箇所か入力方法が間違ってるんでしょうか?
確認なのですが、↓のブックは開いてるのですよね?
Workbooks("あいうえお.xlsm")
また、開いていても別のインスタンスで開いている、という ことは無いですよね? (カリーニン) 2015/01/23(金) 23:11
Workbooks("あいうえお.xlsm")のブックを開いた状態で、その中に組まれたマクロを実行しています。 別のインスタンスで開いている というのはどういう状態の事ですか? (aoi) 2015/01/23(金) 23:15
>Sheets("あああ_" & Format(Now() - 1, "yyyymmdd").Move After:=Workbooks("あいうえお.xlsm").Sheets(1) コンパイルエラーは )がたりないのでは。 Sheets("あああ_" & Format(Now() - 1, "yyyymmdd")).Move After:=Workbooks("あいうえお.xlsm").Sheets(1)
>インデックスが有効範囲にありません Formatは必要では? Format(Date - 1, "yyyymmdd"))
(マナ) 2015/01/23(金) 23:19
>コンパイルエラーは )がたりないのでは。 >Formatは必要では? 両方ともその通りでした。
思い通りの結果が得られました。 ありがとうございました。 (aoi) 2015/01/23(金) 23:26
ちんたら書いているうちに解決しちゃいましたが・・・。 そのままアップします。
変数を使ったものに改造してみました。 ↓ではどうなりますでしょうか?
Sub test()
Dim MyDate As String Dim dt As String Dim wbA As Workbook Dim wbB As Workbook Dim wsA As Worksheet Dim wsB As Worksheet Set wbA = ThisWorkbook dt = CreateObject("WScript.Shell").SpecialFolders("Desktop") MyDate = Format(Date, "YY.MM.DD") Workbooks.Open Filename:=dt & "\あああ_" & Format(Date - 1, "yyyymmdd") & ".xlsx" Set wbB = ActiveWorkbook Set wsB = wbB.Sheets("Sheet1") wsB.Name = "あああ_" & Format(Date - 1, "yyyymmdd") wsB.Move After:=wbA.Worksheets(wbA.Worksheets.Count) Set wsA = ActiveSheet wsA.Range("A34").FormulaR1C1 = "=SUM(RC[2]:RC[10])" Application.Goto wbA.Sheets("原紙").Range("B3"), True Set wsA = Nothing Set wsB = Nothing Set wbA = Nothing Set wbB = Nothing End Sub (カリーニン) 2015/01/23(金) 23:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.