[[20150123222111]] 『マクロの記録で記録したマクロを加工したい』(aoi) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロの記録で記録したマクロを加工したい』(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

カリーニンさんこんばんわ aoiです。

 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

カリーニンさんこんばんわ aoiです。

 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


マナさんこんばんわ aoiです。

 >コンパイルエラーは )がたりないのでは。
 >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.