|
こんにちは。
調べるならそのエラーメッセージでネット検索するのが、道が開けると思います。
要は「そんな名前のブックはありませんよ」「そんな名前のシートはありませんよ」
ってことです。「そんなはずはない」と思われるでしょうが(わたしもむかし
さんざん思いました)、でもエラーに関してはいつだってエクセル君が正しいのです。
エクセル君が「ない」といえば「ない」のです。
エラーの出るコードをこんなふうに書き換えてみました。
Application.Workbooks(OpenFileName).Worksheets("Sheets(1).Name").Cells(1,1)
Application.Workbooks("b.xls" ).Worksheets("Sheets(1).Name").Cells(1, 1)
すると違っているのはブック名の指定の部分だけとなりました。
1行目のコードだけでエラーが出たら、OpenFileNameに問題あり、1行目2行目
ともにエラーが出たら"Sheets(1).Name"にも問題ありです。
っと。上のコードをそのまま実行しちゃダメですね(笑)
Cells(1,1)がどうしたの?ってコードですから。セルの値をメッセージボックスに
返すようにして、さらに実行順も変更してみました。
Msgbox Application.Workbooks("b.xls").Worksheets("Sheets(1).Name").Cells(1, 1).Value
Msgbox Application.Workbooks(OpenFileName).Worksheets("Sheets(1).Name").Cells(1,1).Value
試してみて下さい。
上の行でエラーが出たら"Sheets(1).Name"に問題ありです。
▼さわ さん:
>すいません。
>VBAに触った事がない者なのですが、
>どうしてもやりたい事があり、現在調べています。
>
>環境はExcel2003です。
>
>やりたいことは、
>「Aのブックのシート1枚からBのブックへシートの中身を全てコピーすること」です。
>
>AのブックとBのブックは同じパスに存在します。
>
>Aのブックの名前はランダムなので、
>こちらでGetOpenFilenameで取得したものを使います。
> →今はその方法しか知りません。
>Aの一番左側にあるシートを取得(コピー)します。
>最終的にAのブックを閉じます。
>
>Bのブックの名前は固定です。
>Bのコピー先シート名は固定です。
>
>現在、訳も分からず以下ようなプログラムでとまっています。
>
>
>Private Sub CommandButton1_Click()
> Dim OpenFileName As String
>
> OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls*")
> Workbooks.Open OpenFileName
>
> Application.Workbooks(OpenFileName).Worksheets("Sheets(1).Name").Cells.Copy _
> Application.Workbooks("b.xls").Worksheets("Sheets(1).Name").Cells(1, 1)
>
> Workbooks("OpenFileName").Close
>End Sub
>
>
>ステップインで調べていると、
>「インデックスが有効範囲内ではありません。」
>とでて、とまっています。
>
>Aのブックを開いた後、コピー
>Bのブックへペーストが出来ていないようです。
>
>今、構文などが全く理解していないので、
> Application.Workbooks(OpenFileName).Worksheets("Sheets(1).Name").Cells.Copy _
> Application.Workbooks("bb.xls").Worksheets("Sheets(1).Name").Cells(1, 1)
>について調べています。
>
>よろしくお願いします。
|
|