• 締切済み

エクセルは立ち上げると記憶が飛ぶ?

自動でエクセルを立ち上げてペーストするプログラムの一部ですが、「Worksheet クラスの Paste メソッドが失敗しました。」と、エラーになってしまいます。 調べるとクリップボードのデータが無くなっていました。 昔のエクセル2000までは動いていたのですが。何か方法はあるのでしょうか。 Private Sub Workbook_Open() Rem セルに貼り付け ActiveSheet.Paste (以下省略) End Sub

noname#62128
noname#62128

みんなの回答

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.4

ウィルスではなく、ウィルス対策ソフトが今回は問題のようです Norton Internet Securityにクリップボードをクリアする設定があれば、解除していただくとして これが原因でなかった場合、そうなると運用で何とかするしかありませんね このファイルを起動した後、Pasteが発生する前にクリップボードに格納する間を与えるようにするか あとはクリップボード履歴ソフトを導入することでしょうか? 大体の履歴ソフトは、クリップボードの内容をシャットダウン後も保持しているので、起動直後でも、前回の最後の内容をPasteできるようにしてくれます。 仮にクリップボードが消されても、ソフト自身に保存されている最終内容をPasteの命令が来た際に、クリップボードにセットしてくれます 俺は『ペースター』と言うソフトを使わせてもらっていますが、試した所実行できました 以前フリーでしたが、シェアウェアになってしまいました 残念な限りですが、30日試用期間があるので、試されてはいかがでしょう? http://homepage2.nifty.com/autumn-soft/paster.htm 他にも同様な機能のソフトはあるので、探してみてはいかがですか

noname#62128
質問者

お礼

他のパソコンでは問題ないのでそちらの方でやることにしました。 自分のパソコンは諦めます。色々とありがとうございました。

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

そうなんですか… すいません 手元にエクセル2002も VB6も無いんで試せないんですが、VB2005Express Editionは、エディターも作ったAppliも起動しても消えませんね 恐らくエクセルを再インストールしても状況は変わらないでしょうね 感じとしては、ウィルスの中にクリップボードの内容を吸い出すものがあるそうで、その対策で、ウィルス対策ソフトなどが新たにアプリを立ち上げる際、クリップボードの内容を削除しているような気がします つまり、エクセルに限らず、IEでもメーラーでもクリップボードの消去が発生する場合はエクセルには、原因が無いと思われます そのような事はないでしょうか?

noname#62128
質問者

補足

>恐らくエクセルを再インストールしても状況は変わらないでしょうね はい。同じでした。 パワーポイント、アクセス、ワード、一太郎、花子、IE、OE、VB2008は問題ないです。 確かにウイルスかもしれません。一応Norton Internet Securityは入っていますが。

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.2

では、『clipbrd.exe』を起動させておいて、マクロを実行してみてください 場所がわからなければ[win+R]でファイル名を指定して実行(Windows純正ランチャ)が立ち上がるので、そいつに『clipbrd.exe』と入れればOK その状態でエクセルを立ち上げてみてください 『clipbrd.exe』には、表示可能なものはその状態で表示(文字とかならテキスト、画像ならその画像など)してくれます 表示不可能な物でも、データに含まれていて表示可能な物(例えばファイルなら、そのパスなど)は表示してくれます もちろんショートカットなんかだと、エクセルのシートに貼り付けようとすると、「んな事できるか!」と起こられますが、それでもエラーが出る訳だし、もちろんクリアはされません これで、『clipbrd.exe』にある物がエクセルを起動したときに、クリアされればエクセルの仕業とハッキリします 違うのなら別な原因が考えられます 例えば、貼れない物だった とか 形式が変わって貼れなくなった とか 意外とありがちなのがエクセルがアクティブじゃなかった(クリップボードの貼り付けはアクティブなウィンドウに対して行われる)とかね 結果を知らせて下さい 一応伺いますが、OSとエクセルのバージョンは何ですか? 手元にあるXP+エクセル2003では、表記のマクロはテキストも画像も普通に実行できましたよ 自動でエクセルを立ち上げているのが、何なのか判りませんが、そちらでクリップボードに何かしてる可能性はないですか?

noname#62128
質問者

補足

クリップボードの内容を表示させたままエクセルを立ち上げてみました。結果、エクセルが立ち上がると同時に消えてしまいます。 XP+EXCEL2002です。 エクセルの設定は全てみましたが関係ありそうなのはありませんでした。 たぶんエクセルが壊れているのかも知れません。 再インストールを試みてみます。 でもVB6もやはり立ち上げると消えますよね。

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.1

平たく言うと クリップボードに何も無いのに、いきなり貼り付けろと言われても、そもそも貼り付ける物が無いですよ って事でないかい? もう少し言うと、エクセル・ワードなんかにはOfficeクリップボードと言う特殊なクリップボードを採用していて、office関連のアプリには、該当物を、そうじゃないアプリに対しての貼り付けには、クリップボードの内容を貼り付ける と言うのがあります つまり、なんにもコピーした形跡がないときは、貼り付けできないんですよ Excel2000で動いてたとありますが、仮にそうだとすると、運用方法が変わったのでは? と言うほかありません だって、コード内で、コピーした(クリップボードに格納した)形跡が無いですからね Rem は’の代わり、コメントにこれ使う人は、久々に見ました(笑)

noname#62128
質問者

補足

すみません、立ち上げる直前にコピーしても同じなんです。 エクセルが立ち上がる際にクリップボードの内容をクリアしているみたいなんです。

関連するQ&A

  • エクセル2010のユーザーフォーム記述について。

    エクセル2010でセルのコピーペーストの質問です。次のような記述がユーザーフォームにあります。これだと、なぜか貼り付け先のセルのすぐ上のセルの条件付き書式まで貼り付け先に貼り付けられてしまいます。 どのような記述をすれば不具合を解消できますか。 Private Sub CommandButton1_Click() Selection.PasteSpecial Paste:=xlPasteAllExceptBorders Selection.PasteSpecial Paste:=xlPasteValues UserForm1.Hide End Sub Private Sub CommandButton2_Click() UserForm1.Hide End Sub

  • エクセルVBAのコーディング

    現在、次のようなことがやりたくてエクセルのコードを作ってみました。 ・データが書かれたエクセルの複数のsheetの特定のセルをコピーして、sheet1にコピーペーストしていきたい。 そこでこのようなコードを書いてみました。 Private Sub Worksheet_Activate() Sheet4.Select Range("A16").Copy Sheet1.Select Range("U63").Select Sheet1.Paste End Sub とりあえずSheet4のセルA16のデータをSheet1のU63にコピーペーストするようにしてみたのですが、うまくいきません。 この場合のコードの書き方をご教授いただけないでしょうか? どうぞ、よろしくお願い致します。

  • エクセルをバージョンアップさせたらマクロがうまくいきません

    OSはXPです エクセル2002から 2003にバージョンをあげました いままでうまくいっていたマクロが Range(Cells(1, 1), Cells(Cells(65535, 1).End(xlUp).Row, 9)).Select Selection.Copy Sheets("Sheet1").Select Sheets.Add ActiveSheet.Paste このような内容で ActiveSheet.Paste  この部分でエラーが起きます 「実行時エラー ”1004”  worksheetクラスのpasteメソッドが   失敗しました」 というメッセージがでます。 どういう対処をしたらよろしいでしょうか? ご教授ください。 (バージョンを元にに戻すなど)

  • エクセル シート上TextBox(日付)

    Sheet上にTextBox=”hiduke”とする このBookを開いた時に 現在に日付にしたいのですが どのようにしたら良いのでしょうか? Private Sub Worksheet_Activate() ならSheetをアクティブにしたら現在の日付に なるのですが・・Bookを開いた時に 現在の日付にしたいです。 すいません教えて下さい。 Private Sub Workbook_Open() Me.hiduke.Value = Format(Now(), "yyyy/mm/dd") End Sub

  • EXCEL ツールバーを非表示にするには(VBA)

    EXCELを開いた時、ツールバー(standerd)が見えないように(非表示)したいのですが、わかりません。 VBAで下記のように記述するとエラーが返ります。 Private Sub Workbook_Open() CommandBars(3).Visible = False End Sub 教えて頂けると幸いです。

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

  • エクセル VBA エクセルの表示について

    下記のプロシージャを実行し、Userform1のみ表示したじょうたいで、他のエクセルファイルを開くとエクセルが表示されません。他のエクセルファイルを開いた時に、エクセルが自動で表示されるような対処法を教えてください。どうかよろしくお願いします。 Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub

  • エクセルVBAで、ユーザーフォーム初期化時のエラー

    Excel97を使用しています。 コンボボックスにリストをセットしようとして、 Private Sub Workbook_Open() Range("A1:A5").Name = "社員" 'セル範囲はブックを開く度に変わります End Sub Private Sub UserForm_Initialize() ComboBox1.ListFillRange = "社員" End Sub というコードを書いたのですが、 「コンパイルエラー:メソッドまたはデータメンバが見つかりません。」というエラーが出てきて、 .ListFillRange = の部分が選択されてしまいます。 ListFillRange を RowSource に変更するとエラーは出ないのですが、RowSource で設定してしまうと、後にリストが変更できないと教わりましたので、これ以外でコンボボックスにリストをセットする方法がありましたら教えて下さい。 プロパティ/メソッドの一覧にListFillRangeが見当たらなかったので、もしかしたらエクセル97では使えないのでしょうか? どうぞよろしくお願いします。

  • ActiveSheet.RefreshAllがエラ

    ActiveSheet.RefreshAllがエラーになる理由を教えて下さい。 エクセル2007です。 ピボットテーブルがあるシートをアクティブにして Sub test() ActiveSheet.RefreshAll End Sub をすると、 オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) になります。 しかし、ActiveWorkbook.RefreshAllにかえると、更新されます。 なぜActiveSheetだとダメなのでしょうか? ヘルプをみたいのですが、 Window.ActiveSheet プロパティ Workbook.ActiveSheet プロパティ Application.ActiveSheet プロパティ のどれを見ればいいのでしょうか? Workbook.ActiveSheet か Application.ActiveSheet のような気がします・・・

  • エクセルVBAで作成した別ブックにVBAを記述したい

    VBAで別ファイルの作成は下記で出来ているのですが、出来上がったファイルにVBAを記述する方法がわかりません。 具体的には一番下のSub TEST()を新しいブックの標準モジュールに記述したいのと、sheet1に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "ChangeTEST" End Sub を入れたいです。 また Private Sub Workbook_Open() MsgBox "OpenTEST" End Sub も入れたいのです。 どうぞご教示ください。 Sub 複製() Dim wb As Workbook, sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set wb = Workbooks.Add Application.SheetsInNewWorkbook = sc wb.Sheets("Sheet1").Select ThisWorkbook.Sheets("Sheet1").Cells.Copy wb.Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Buttons.Add(123, 195, 68.25, 15).Select Selection.OnAction = "TEST" Selection.Characters.Text = "TEST" ActiveWorkbook.Close ThisWorkbook.Activate Sheets("Sheet1").Select End Sub Sub TEST() MsgBox "TEST!!" End Sub よろしくお願いします。

専門家に質問してみよう