人気マンガがだれでも無料♪電子コミック読み放題!!

Excelを保存して閉じるとマクロが消えます。原因と解決方法をどなたかご教示いただけないでしょうか。

ネットで、文字列からハイパーリンクを抽出するマクロを見つけたのでこれ幸いと思い、Excelに保存しました。このときマクロ有効ブックの拡張子にして保存しています。ところが保存して一旦閉じたあと開いてみると、先ほどまで使っていたはずのマクロが存在しないのです。

マクロ保存先が間違っているのかな?とは思いますが、原因がお分かりになるかたがいらっしゃれば、ご教示いただけますと幸いです。

尚、拾ったコードはこちらです。
http://oshiete.goo.ne.jp/qa/2356920.html

public subというところが怪しいような気もします…

このQ&Aに関連する最新のQ&A

A 回答 (1件)

個人用マクロ ブック (Personal.xlsb) に保存したということはないですか?

    • good
    • 0
この回答へのお礼

ママチャリ様
この度は回答いただきありがとうございます!
お礼が遅くなり申し訳ありません。

なぜか今日開いてみたらsheet17という作った覚えもないシートに入っていました…!!!

今後もしこうした事態が引き起こされたら、パーソナルブックを疑いますね!

重ね重ね御礼申し上げます。

お礼日時:2016/04/14 21:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelのマクロの復元

マクロ名がマクロ(1)、マクロ(2)、マクロ(3)のマクロを登録し、(1)-(2)-(3)と順次実行するマクロ(4)を登録して使っていました。この時、マクロ(1)~(3)は削除していませんでした。先程、マクロ(4)を変更しようと思い、誤ってマクロ(4)を削除してしまいました。すると、マクロ(1)~(3)も表示されなくなりました。マクロ(1)~(3)が面倒な作業なので復元したいのですが、どなたか宜しくお願いします。

Aベストアンサー

エクセルの「ツール」「マクロ」からマクロを削除したのであれば、1つずつしか削除できないはずなので、通常はすべてのマクロが一度に無くなってしまうことは考えられません。
そこで、「落ち着いてもう一度確認してみてください」と回答したのですが、削除の方法が違うのでしょうか?

勘違いしてマクロの無い別のファイルを上書き保存したとか、あるいはまったく別のファイルを開いているということは考えられないでしょうか。

Q個人用マクロブックが消えました

エクセルで個人用マクロブックを利用していましたが、今日になって急に、VBEのプロジェクトエクスプローラーに、personal.xlsが表示されなくなってしまいました。
ファイル自体が存在してないようです。削除した覚えはないのですが。復旧は不可能でしょうか?
ウィルスチェックは正常でした。こんなふうに突然消えてしまうことは、よくあることなんでしょうか。

Aベストアンサー

わたしもこの前突然消えました。OSがXPでEXCEL2002でしたが、最初理由がわからなかったのでびっくりしましたけどね。
まず確認してほしいのですが、OSがXPであれば
「c:\Document and Settings\ユーザー名\Apprication Data\Microsoft\Excel\XlStart」フォルダの中に「personal.xls」があるかどうか確認してください。
personal.xlsが存在している場合には、Excelを立ち上げてヘルプメニューのバージョン情報を選択し、使用できないアイテムボタンをクリックすると、personalアドインが使用できない設定になっていると思いますので、使用できるようにすれば私の場合はできました。

QエクセルでハイパーリンクのURLだけを文字抽出したい

ホームページからコピーし、エクセルにリンク文字をペーストすると、青文字(文字にハイパーリンクがかかった状態)が貼りつきます。その張り付いた文字の、リンク先URLを文字としてほしい(http○○・・)のですが、できますか?
青文字を右クリックしてハイパーリンクの編集からURLは見られるのですが、たくさんのリンクリストからURLだけを抽出するのが大変なので、よい方法がありましたらお願いします。

Aベストアンサー

No3 です。
サブアドレスの存在を忘れていました。
訂正です。

Public Sub GetURL()
  Dim h As Hyperlink
  Dim a As String
  Dim s As String
  For Each h In ActiveSheet.Hyperlinks
    a = h.Address
    s = h.SubAddress
    If s <> "" Then
      a = a & "#" & s
    End If
    h.Range.Offset(0, 1) = a
  Next
End Sub

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

Qエクセル 表を大きく、紙いっぱいに印刷したい

エクセルで表を作りました。
印刷プレビューで確認したところ
用紙に対して表が小さく見栄えがしません。

一つ一ついじればできると思いますが、
簡単に、
用紙いっぱいにフォントも大きくし、表も大きくし、
印刷するやり方はありますか。
教えてください。

Aベストアンサー

CtrlキーとPのキーを同時に押すと「印刷」ダイアログが呼び出せます。その状態でAltキーとWのキーを同時に押すと「印刷プレビュー」が表示されますので、印刷のイメージがつかめます(必ずしもプレビュー通りには印刷されませんが)
印刷プレビュー画面の上にある、設定のボタンを押してあげれば、余白を少なくしたり、拡大縮小印刷をパーセンテージを指定しておこなえたりします。いずれにせよ、プレビューで確認しながら拡大率を決めていけばいいと思います。なお、「拡大縮小印刷」のところに「次のページ数に合わせて印刷をする」というチェックをいれて横1×縦1にしてあげれば自動で拡大縮小印刷ができる場合がありますが、やってみればわかりますが、特に縮小印刷の場合小さくなりすぎたりする場合もあります。

QExcel VBA --- コマンドボタンが表示上で消える ---

Excel VBAの初心者です。
今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。
用語や説明が上手くできないかもしれませんがよろしくお願いします。

OSはWindows2000、Excelのバージョンは2000です。

sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに
飛ぶようにしています。

別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをクリックしてsheet1のメニュー画面に戻るようにマクロを組みました。

ところが、作業用のシートからメニューに戻ると前回クリックしたコマンドボタンが表示上消えてしまっています。
そのコマンドボタンがあった位置にカーソルを持って行ってクリックするとちゃんとコマンドボタンの動作をします。

同じような質問がないか検索してみましたら『コマンドボタン上の文字の表示がおかしくなる』という質問があって、下記コードを入れたら解決したそうなので、Sheet1に下記のようなコードを入れてみました。
でもダメでした。

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1

End Sub

解決方法のご教授をお願い致します。

Excel VBAの初心者です。
今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。
用語や説明が上手くできないかもしれませんがよろしくお願いします。

OSはWindows2000、Excelのバージョンは2000です。

sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに
飛ぶようにしています。

別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをク...続きを読む

Aベストアンサー

こんにちは。

> Application.ScreenUpdating = False
> ActiveWindow.ScrollRow = 100
> ActiveWindow.ScrollRow = 1

ワークシートには Redraw メソッドが無いので、その代用コード
だと思います。以前、一度同じような状況になって、

  Application.ScreenUpdating = True

では再描写してくれなかったため、同様のコードを書いたことが
あります。ScrollRow を使ったのか覚えてませんが、確かシート
をスクロールさせたような..?

で、回答ですが、再描写が目的なので ScreenUpdating = False
として画面更新を止めてしまっては意味がないですよ。それ以前
のコード実行中に画面更新を止めている可能性があるので、
コードの終了部で、

Application.ScreenUpdating = True
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1

としてみては?

こんにちは。

> Application.ScreenUpdating = False
> ActiveWindow.ScrollRow = 100
> ActiveWindow.ScrollRow = 1

ワークシートには Redraw メソッドが無いので、その代用コード
だと思います。以前、一度同じような状況になって、

  Application.ScreenUpdating = True

では再描写してくれなかったため、同様のコードを書いたことが
あります。ScrollRow を使ったのか覚えてませんが、確かシート
をスクロールさせたような..?

で、回答ですが、再描写が目的なので ScreenUpdating = F...続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QVBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義がまずいと思うのですが、それ以上の事は分かりません。どなたか、分かる方がおりましたら、よろしくお願いします。また、プログラムは以下のようになります。

Sub 繰り返し()
'繰り返し
Dim s As Integer
For s = 0 To 17
Range("cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)").Select
Range("cells(8,s+2)").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("20081216_210647").Range( _
"cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""0810p2x"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="0810p2x"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "0810p2x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "t"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next
End Sub

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義...続きを読む

Aベストアンサー

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな(Excelで表示されている)シートが上位オブジェクトとして、自動的に認識されます。

≪例2≫
Sheets("Sheet2").Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、Rangeのみシート名が記述されています。
Sheets("Sheet2").Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
Activeなシートが、Sheet2の場合はエラーになりません。
しかし、ActiveなシートがSheet2以外の場合、エラーが発生します。
直前に、
Sheets("Sheet1").Select
などとしていれば、ActiveシートがSheet1になっていますから、エラーになります。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(8, 1), Sheets("Sheet2").Cells(1587, 2)).Select
と書いておけば安心です。
Withステートメントを使えばスッキリ纏めることができます。
With Sheets("Sheet2")
  .Range(.Cells(8, 1), .Cells(1587, 2)).Select
End With

# Sheets("Sheet2")の上位オブジェクトが省略されていることにも気がついてください。

>そこで自分で基礎を勉強したいのですが推薦できる参考書などがござ
>いましたら、教えていただけませんか?
私自身は、入門書程度の雑誌を1冊買っただけです。どれが良いとかはよく分かりません。
「マクロの記録」を活用して、参考コードを取得し、汎用性のあるコードに編集しています。
新しい単語があれば、文字カーソルを単語の上に置き、F1キーを押してVBAのヘルプを必ず見るようにしています。
躓いた時は、Web検索して欲しい情報を得たり、あるいは、こうした掲示板で先輩方のお力をお借りしています。

Excel(エクセル)VBA入門:目次
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=4651404
エクセル入門・初級編
http://www.kenzo30.com/excel_kiso.htm

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな...続きを読む

QVBAで複数の数式セルを最終行までコピーするには?

エクセルで下記のような表を作成しています。

   A   B   C   D
1 項目1 数式 数式 数式
2 項目2
3 項目3
  ・
  ・
  ・

B1~D1の数式は項目1を参照したものです。
この時、2行目以下~最終行まで数式をコピーするには、
どのようなVBAを書けばよいでしょうか?

よろしくお願い致します。

Aベストアンサー

Range("A1", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1).Resize(, 3).Formula = Range("B1:D1").Formula

とか?


人気Q&Aランキング