[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/13(Thu) 18:02
投稿者名:わたる
Eメール:
URL :
タイトル:
シートの保護を解除するとエラーが出ます
エクセルマクロで、シートのセルの値だけをコピーして貼り付ける処理をしました。
初めはシートの保護設定をしない状態でマクロを作ったのですが、
あとになってから、シートを保護した状態からコピーの処理を
しなくてはならなくなりました。

なので、セルがアクティブになったら保護を解除する処理を入れ、
貼り付け処理が終わったら保護しなおすようにしました。

実際実行すると、RangeクラスのPasteSpecialメソッドが失敗しました。

というエラーが出てしまいました。
色々調べたのですが、解決方法が分かりませんでした。

分かる方がいましたら、ぜひ教えてください。



    Workbooks.Open Filename:=path
    Windows(NITC.csv).Activate
    Range("A2:E2049").Select
    Selection.Copy
    Windows("NITC.xls").Activate
    Sheets("SV-TOP").Select

    'シートの保護解除
    ActiveSheet.Unprotect Password:="1234"
    
  Range("C8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    '表示項目設定後半
    Windows(NITC.csv).Activate
    Range("F2:AD2049").Select
    Selection.Copy
    Windows("NITC.xls").Activate
    Sheets("SV-TOP").Select
    Range("J8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    '保護設定入れる
    ActiveSheet.Protect Password:="1234"

  以下処理続く

投稿時間:2005/01/13(Thu) 18:18
投稿者名:INA
Eメール:
URL :
タイトル:
Re: シートの保護を解除するとエラーが出ます
>Windows(NITC.csv).Activate
 ↓
Windows("NITC.csv").Activate では?


Select しないで記述して方が良いですよ。
わざわざ選択しなくても、たいていの処理は出来ますから。

WorkBooks("NITC.csv").Worksheets("Sheet1").Range("A1:B10").Copy

WorkBooks("A.Xls").Worksheets("Sheet1").Range("A1").PasteSpecia
l _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

みたいに。

投稿時間:2005/01/13(Thu) 19:39
投稿者名:わたる
Eメール:
URL :
タイトル:
Re^2: シートの保護を解除するとエラーが出ます
INAさん、お答えありがとうございます。
問題だった部分は、

    Windows("NITC.xls").Activate
    Sheets("SV-TOP").Select
    'シートの保護解除
    ActiveSheet.Unprotect Password:="1234"

    Workbooks.Open Filename:=path
    Windows(NITC.csv).Activate
    Range("A2:E2049").Select
    Selection.Copy
    Windows("NITC.xls").Activate
    Sheets("SV-TOP").Select

保護解除する部分を上に持ってきたらうまくいきました。

> >Windows(NITC.csv).Activate
>  ↓
> Windows("NITC.csv").Activate では?

これは、""を付けなくても大丈夫でした。


> Select しないで記述して方が良いですよ。
> わざわざ選択しなくても、たいていの処理は出来ますから。

ご指摘ありがとうございます。
早速Selectを記述しないやり方でやってみたいと思います。

投稿時間:2005/01/14(Fri) 09:48
投稿者名:INA
Eメール:
URL :
タイトル:
Re^3: シートの保護を解除するとエラーが出ます
> > >Windows(NITC.csv).Activate
> >  ↓
> > Windows("NITC.csv").Activate では?
>
> これは、""を付けなくても大丈夫でした。

そんなことはないと思いますけど・・

Option Explicit を宣言していますか? 
On Error Resume Next を使っていませんか?

投稿時間:2005/01/14(Fri) 10:53
投稿者名:わたる
Eメール:
URL :
タイトル:
Re^4: シートの保護を解除するとエラーが出ます

あ、すいませんでした・・・。
掲示板に書き込むときに分かりやすくするために、そのように書いていまして
実際はpathnameの中にファイル名が格納されているのです^^;
紛らわしくてすいませんでした。