[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロの記録で記録したマクロを加工したい』(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.