プロが教えるわが家の防犯対策術!

Excel2000 罫線を除く全て貼り付けをマクロに記録しCtrl][Alt][v]のショートカットキーを使いたかったので、マクロの記述を他の(以前教わった)Auto_Open()のVBAにコピーししました。その日は使えたのですが、後日使えなくなりました。打つ手はありますか?
 
今度は既存のVBAに引っ越さないでやってみようと、VBAProject(PERSONAL.XLS)の各Moduleを解放し何もない状態で 再び[罫線を除く全て]を貼付けるマクロを記録しました。やはり実行できません。
症状としては 
罫線で囲まれたセルを選択してコピーし
貼付け先を選択し
ツールバーの[実行三角印]をクリックするとコピー元の点線アクティブが解除されてしまいます。

何かが悪さしている感じです。お掃除は出来ないでしょうか? Excelを削除してインストールし直さないとダメでしょうか?上書き再インストールでは直りませんでした。

A 回答 (6件)

#1です。



> 他の人がマクロ出来るか興味有ります。

最初から言っているように、こちらの環境でもキーボードのショートカットを使わないとこのマクロは上手く動きません。そういう意味でojin60さんの環境がおかしいのでは無く、動作そのものは正常ではないかと申しております。

使っているマクロがどんな事をしているか理解しておいた方が良いようです。
これは「キーボードショートカットを自動的に割当てるマクロ」と考えて良いと思います。

Sub Auto_Open()
 Application.OnKey "^%{v}", "罫線無v"
End Sub

Sub Auto_Open は記述が Personal.xls にある場合はExcelが開いた時、そうで無い場合はマクロが含まれる該当ブックが開いた時に自動実行されるマクロです。
上記は 自動的に実行され、Ctrl+Alt+V キーが押された時に「罫線無v」マクロを実行しなさいと命令する「マクロ」です。

Sub 罫線無v()
  Selection.PasteSpecial Paste:=7
    Application.CutCopyMode = False
End Sub

上記は先のマクロ記録で記録された
Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
とまったく同じと言っても良いものです。

違いの Paste:=7 の「7」は xlAllExceptBorders を数字で表したものです。
Operation:=xlNone, SkipBlanks:=False, Transpose:=False は全て省略可能なので省略しています。Application.CutCopyMode = False は、コピー動作中にEscキーを押した場合の記録マクロと同じです。

つまり、この2つで
Ctrl+Alt+Vキーを押したときに「罫線無v」マクロが自動的に実行されるようにしたマクロ
って事です。

私が以前の回答で例に上げたマクロは、マクロを実行してからコピー元を選択し、コピー先を指定しています。
これにより、キーボードショートカットを使わなくても良いので、ツールバーに割当てる事が可能になっています。
    • good
    • 0
この回答へのお礼

期待通りまたご返事をいただきました。ありがとうございます。そして無知者を理解の入り口に導いてくださる説明力に感服いたしております。何故3つも購入した参考書は壁厚く 眠くなるだけなのだろう?
マクロを実行してから、コピー元とコピー先を指定する構文は実行してみたらおもしろかったです。ボタンに登録して何かに使えそう。
当方混乱してご迷惑お掛けしました。ショートカットキーで実行できていたのが名前変更などしている内に不可となり、実行ボタンでは使用できないと騒ぎ、「書いたり消したりしていると重くなる」との活字を読んだ記憶が浮上し、連想で、ゴミが残り陰で悪さしているに違いない、と勘ぐり“掃除したい”になったのでした。その間辛抱強くご返事いただいたことは全て役立つことでした。
(反復使用の言葉しか思い当たりませんが)
心より感謝申し上げます。ありがとうございました。

お礼日時:2004/02/09 07:51

#1です。



何をされたいのか不明です。「新規のVBエディタの状態」ってどんな状態の事なんでしょう?

アドインはチェックを外せば消えますし、Personal.xls 等は XLSTARTフォルダにあるのでごみ箱へポイすれば起動時にロードしなくなります。
XLSTARTフォルダの場所はOSによって異なりますが、多分こんな感じでしょう。

Windows9x、Me
C:\Program Files\Microsoft Office\Office\XLStart

Windows2000、XP
C:\Documents and Settings\ログイン名\Application Data\Microsoft\Excel\XLStart

Win2000、XPはエクスプローラのフォルダオプションで全てのファイルとフォルダを表示にしないと見えないかも知れません。

もとのご質問からどんどん離れているような。。。

この回答への補足

パニクってふらつき、ご迷惑ごめんなさい。
{罫線を除く全て貼付け}は{編集}から入ってマウスで実行すると出来ますが、マクロにすると、以下の様な構文になり、私の環境では実行出来ません。他の人がマクロ出来るか興味有ります。
Sub Macro1()
' Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub
何かおかしくて“お掃除”などと考えたわけです。
所が、保存ファイルの中から、やっと見つけました、以前教わった{罫線を除く全て貼付け}の構文は以下の物で、これだと今の私の環境でも実行できます。で、お騒がせしましたが、お掃除などと突飛なことは考えず、このまま使ってゆくことにいたします。
ご回答への感謝と重々のお詫びと共に、明日閉めさせていただきます。Excelのバグと何かで読んだけど、まさか{罫線を除く全て}ではないでしょう?私も、実行できていたときは下記の構文でやっていたのかしら。名前変更などして折り合い悪くなり削除して、マクロして上の構文使って、出来ない出来ないと言っていたのか!?

Sub Auto_Open()
Application.OnKey "^%{v}", "罫線無v"
End Sub

Sub 罫線無v()
Selection.PasteSpecial Paste:=7
Application.CutCopyMode = False
End Sub

補足日時:2004/02/08 23:18
    • good
    • 0

#1です。



xlaはアドインです。
funcres (FUNCRES.XLA) は標準の分析ツール
atpusrc1.xls (ATPVBAEN.XLA) は標準の分析ツール-VBA
と思われます。

Excelメニューのツール-アドインで該当チェックを外せば閉じます。

PERSONAL.XLS は個人用マクロブックで、マクロ記録を作業中のブックではなく個人用マクロブックに保存した場合に作成され、Excel起動時に自動的にロードされます。
本当にまったく身に覚えが無い場合は、ウィルスの可能性もありますが、、、

VBA Functons and Subs は不明です。
    • good
    • 0
この回答へのお礼

重ねての明快なアドバイスありがとうございました。
心より感謝申し上げます。
今どうやったら新規のVBエディタの状態になるか、試行錯誤しています。削除後新規Excel2000をインストールしてもVBは残っているし、そもそも、Excel97を要求されないで VupのExcel2000がインストールされること自体新規ではないらしいし。スキル低いから、悶絶です。

お礼日時:2004/02/08 22:05

#1です。



> 選択元がハイライトではなくなるのが正常な動作なのですか?

正常と言ったのは、どの環境でも同じ結果になるのではという事です。
こちらで試した限りでは、一部のダイアログが表示されるとコピー状態は解除されますが、その動作に一貫性はみいだせません。例えば、ある範囲をコピーしてから「検索」選んでもコピー状態は解除されないが、「置換」だと解除される。ただし、「検索」のダイアログ内から「置換」を選んだ場合は解除されないなど。

つまり、ojin60さんの環境がどうと言う事ではなく、Excelの仕様またはバグではないかと思われます。マクロを選ぶダイアログが表示された時点でコピーは解除されてしまうので、「何もコピーしていないときに実行したときと同じ」状態になってしまう訳です。

ダイアログを出さないようにショートカットキーに割当てをするか、すべての処理をマクロ内で完結させるかしか無いように思います。

例はマクロを実行した後で、コピー元範囲の選択、貼付け先の指定を行い、貼付けをします。あんまりスマートじゃありませんが。

Sub PasteNoBorders()
Dim r1 As Range, r2 As Range
On Error GoTo ER:
 Set r1 = Application.InputBox _
   ("コピー元をマウスで選択して下さい。", "コピー元選択", Type:=8)
 Set r2 = Application.InputBox _
   ("貼付け先をマウスで選択して下さい。", "貼付け先選択", Type:=8)
 r1.Copy
 r2.PasteSpecial xlPasteAll
 For i = 5 To 12
   r2.Resize(r1.Rows.Count, r1.Columns.Count) _
    .Borders.LineStyle = xlNone
 Next i
ER:
End Sub

この回答への補足

ご丁寧な説明に感謝申し上げます。納得の心境です。
書いていただいた構文はいずれ実行してみます。
質問の本題は、実行できないけど、何か見えないゴミが残っているのではないか、それを掃除したい、ということですが、今気が付いたのですが、VBのエディタの左ペインがいつの間にか変わっているのです。いまのプロジェクト・エクスプローラは
atpusrc1.xls (ATPVBAEN.XLA)
>>ThisWorkbook
>>VBA Functons and Subs
funcres (FUNCRES.XLA)
VBAProject
>>Sheet1
>>Sheet2
>>Sheet3
VBAProject (PERSONAL.XLS)

となっています。最後のプロジェクトは常用で多数の構文があります。
最初のatpusrcl.xlsを右クリックでプロパティを開こうとすると、なんとパスワードを求められます。パスワードは判りません。VBA Functons and Subs を開くと大量の構文があります。
次のfuncres はダブルクリックするとパスワードを求められます。これは何なのかしら?解放することも出来ません。レジストリーの何処に書き込まれているでしょう? 強引に削除してみたいのですが。まさかウイルス?

補足日時:2004/02/08 20:34
    • good
    • 0

> お掃除は出来ないでしょうか? 



まず、マクロ有効の状態でブックを開いていますか?

メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
例えば、「中」にして[OK]します。

あとは、コードを提示しないと、お掃除お手伝え出来ないみたいんよ。

この回答への補足

ありがとうございました。
マクロはいつも有効状態です。問い合わせウインドが出ない様に[署名]をWEBで教わりましたので。セキュリティはデホルトの「中」です。

コードを提示しないと とはどういう事でしょうか?よろしければご指導の程お願いします。

補足日時:2004/02/06 22:28
    • good
    • 0

正常な動作のように思いますが??



マクロ実行のオプションでショートカットキーを割当てたらどうでしょう?

この回答への補足

ありがとうございました。
選択元がハイライトではなくなるのが正常な動作なのですか?
マクロの実行ボタンを押し選択元がコピー印の点線ハイライトではないのに、マクロウインドから実行すると
[実行時エラー1004
RangeクラスのPasteSpecialメソッドが失敗しました]
のウインドが出ます。
これは何もコピーしていないときに実行したときと同じです。
[値のみ貼付け] をショートカットを付けてマクロを作りショートカットキーで実行すると出来ますが、ツールバーの実行ボタンからマクロウインドに入ろうとすると、点線ハイライトが消え、実行時エラー1004に成ります。
そこで掃除したいと素人考えしました。

補足日時:2004/02/06 22:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!