エクセルを使っています。簡単なマクロも使用します。
ところが、マクロと関係のない(と思われる)ファイル(エクセル)を開くとき、「マクロを有効にしますか云々」と聞いてきます。その画面のツールバーからマクロを開いて見ると、たくさんのマクロが記録されていました。何が起こったのでしょうか。ちなみに、そのマクロは「…が選択範囲にありません…」などと表示され実行できませんでした。それ以外については異状はなくふつう通り操作できますが、気になります。どうかよろしくお願いします。

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

A 回答 (1件)

そのファイル自体では、マクロを、使ってなくても、


それ以前に実験か何かでマクロ登録しておいてから、
削除した場合でも、マクロを有効にしますか?メッセージはでますよ。
(ツール→マクロ→マクロ→削除、を選んだ場合。)

マクロがいらない、ということでしたら、
ツール→マクロ→VisualBasic Editorで、
プロジェクトウインドウ(多分、左上にある)の、
標準だったかな~?(すみません、今、Excel2000が手元にない(ーー;))の、
Module1を右クリックして、Module1の解放、を選ぶと、
もしかしたら、直るかもしれません。
(Module1以外にマクロが記録されている場合も、同様の手順を行ってみてください。)
    • good
    • 0
この回答へのお礼

himehimeさんありがとうございました。ファイルは除霊されたごとく「有効にしますか」云々を聞かなくなりました。すっきりしました。これで安心して夜も眠れます(笑)

お礼日時:2001/08/16 12:47

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

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

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

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

Qエクセル マクロ ファイルが開いてなかったら開く 開いていたら選択する

こんばんは、エクセル2010を使っていて、少し解らない事が有るので教えて頂けませんか?

以下の様なコードで、test.xlsmが開いてなかったら開く、開いていたらsheet1を選択するつもりでしたが上手く行きません。

Sub ボタン26_Click()

On Error Resume Next
If Workbooks("C:\Users\PC\Desktop\test.xlsm") Is Nothing Then
Workbooks.Open "C:\Users\PC\Desktop\test.xlsm"
End If
Sheets("sheet1").Select

End Sub

上記のコードでは、開いてなかったら開く、開いていると、開く確認が入ります。

正確には、どうやったら実現できるでしょうか。

詳しい方、教えて頂けませんでしょうか。

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

Aベストアンサー

こんばんは。

これは、昔、私が考えたコードです。
一度、ステップマクロで動かしてみると、良くわかります。
ご参考までで、決して、標準スタイルのコードではありません。

もし、ツッコミを入れるとしたら、
ErrHandler:


  Set ws = Workbooks(fn)
  Resume Next
----------------------
ErrHandler:


Resume

にすれば良いのですが、そこまでは、無茶できませんでした。

'//
Sub Test1()
'No. 8980161
 Const mPATH As String = "C:\Users\PC\Desktop\test.xlsm"
 Dim fn As String
 Dim ws As Workbook
 fn = Dir(mPATH)
 If fn = "" Then Exit Sub
 On Error GoTo ErrHandler
 Set ws = Workbooks(fn)
 ws.Activate
 Worksheets("Sheet1").Select
 Exit Sub
ErrHandler:
 If Err.Number = 9 Then
  Workbooks.Open mPATH
  Set ws = Workbooks(fn)  '←本来は、下をResumeすれば、ここは無駄 
  Resume Next
 End If
End Sub
'///

こんばんは。

これは、昔、私が考えたコードです。
一度、ステップマクロで動かしてみると、良くわかります。
ご参考までで、決して、標準スタイルのコードではありません。

もし、ツッコミを入れるとしたら、
ErrHandler:


  Set ws = Workbooks(fn)
  Resume Next
----------------------
ErrHandler:


Resume

にすれば良いのですが、そこまでは、無茶できませんでした。

'//
Sub Test1()
'No. 8980161
 Const mPATH As String = "C:\Users\PC\Desktop\test.xlsm"
...続きを読む

QEXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか?

EXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか?

EXCEL2007を使っています。
マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか?

シート1

1
3
2

というデータを「マクロの記録」で昇順に並べ替えるマクロを作成します。

シート2

3
5
4

というデータに適用したいのですが、マクロを実行するとシート1のデータが
並べ替えられてしまいます。

マクロを読むと「シート1」という記述があるのでシート1にしか適用できないようです。

マクロの記録だけで別のシートにも適用できるマクロを作成できないでしょうか?

(ただの並べ替えだけだったらマクロを作成する必要はないのですが、実際にはもっと複雑な
動作をさせたいのです)

Aベストアンサー

>マクロの記録だけで別のシートにも適用できるマクロを作成できないでしょうか?
>実際にはもっと複雑な動作をさせたいのです

記録マクロは完璧なものでは無いので、若干の変更を加えたり必用な仕様に仕上げるにはマクロの知識が必用になります。

Qエクセルマクロについて質問です ファイルを開くマクロをワイルドカードを使用して作成したいです

エクセルマクロの初心者です
ファイルを開くマクロを作成したいです。

対象のファイルは、
 商品コード(5桁の数字) スペース 商品名
 たとえば 40157 ベーコンスライス500g
という名前が付いており、100個以上同一のフォルダに入っています。商品コードのみを入力して、マクロを実行すると目的のファイルが開ける。という形式で作りたいです。
商品名まで入力し、開きたいファイル名と完全に一致させれば

Sub 栄養計算()
'
Workbooks.Open Filename:="D:\ekuseru\" & Range("E4").Value & ".xls"

End Sub

で実行できたのですが商品名まで入力するは大変です。
そこで、ワイルドカードを使えばコードのみの入力でできるカナと思い試してみたのですがうまくいきませんでした。一応調べてみて Like関数を使うとできるという話を見つけたのですが、私が未熟なのかうまくできませんでした。
とても初歩的な質問で恐縮なのですが、自分では完全に行き詰ってしまいましたので、皆様の力をお借りしたいです。お願いします。

エクセルマクロの初心者です
ファイルを開くマクロを作成したいです。

対象のファイルは、
 商品コード(5桁の数字) スペース 商品名
 たとえば 40157 ベーコンスライス500g
という名前が付いており、100個以上同一のフォルダに入っています。商品コードのみを入力して、マクロを実行すると目的のファイルが開ける。という形式で作りたいです。
商品名まで入力し、開きたいファイル名と完全に一致させれば

Sub 栄養計算()
'
Workbooks.Open Filename:="D:\ekuseru\" & Range("E4").Value...続きを読む

Aベストアンサー

ワイルドカードでやるなら、Dirで該当ファイルがあるか調べて開いては?
ワイルドカードで無い場合でも、ファイルを開く前に存在するか否かを確認するのは基本です。

Sub 栄養計算()
 Dim sTarget As String
 sTarget = Dir("D:\ekuseru\" & Range("E4").Value & "*.xls")
 If sTarget <> "" Then
  Workbooks.Open Filename:="D:\ekuseru\" & sTarget
 Else
  MsgBox ("該当ファイル無し")
 End If
End Sub

商品コードで始まるファイルが複数ある場合は考慮していません。

Qエクセルで自動記録したグラフ作成マクロの編集方法

エクセルに備わっているマクロの自動記録機能を使って、散布図のグラフを作成するマクロを作っています。
シートの名前が変わるとマクロが正常に働かない問題は、

Dim SheetName As String
SheetName = ActiveSheet.Name
と定義して、

ActiveChart.SetSourceData Source:=Sheets("Trial10").Range("CI1:CK7"), PlotBy _
:=xlColumns

の "Trial10" を SheetName に書き換えれば動くようになることは分かったのですが、

ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R2C80:R101C80"

上記の場所で行き詰まっているようで、このような場合、どう書き換えればよいのかが分かりません。
どのように書き直せばよいのでしょうか。


ちなみに、マクロやVBAに関しては初心者です。
プログラムの知識も殆どありません。

どうか、ご教授をお願い致します。

エクセルに備わっているマクロの自動記録機能を使って、散布図のグラフを作成するマクロを作っています。
シートの名前が変わるとマクロが正常に働かない問題は、

Dim SheetName As String
SheetName = ActiveSheet.Name
と定義して、

ActiveChart.SetSourceData Source:=Sheets("Trial10").Range("CI1:CK7"), PlotBy _
:=xlColumns

の "Trial10" を SheetName に書き換えれば動くようになることは分かったのですが、

ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R2C80:...続きを読む

Aベストアンサー

ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R2C80:R101C80"

ActiveChart.SeriesCollection(1).XValues = "=" & SheetName & "!R2C80:R101C80"
に書き直してみて下さい。

ただし、グラフ化する数値の(表内の)範囲が同じであることが前提
です。
シートが変わるたびにグラフ化する表内の範囲に変化があるのでしたら
それを調べる必要があるので、複雑な操作が必要になると思います。

Qマクロの記録で作成したマクロがデータが代わると誤動作する。

マクロの記録で作成したマクロがデータが代わると誤動作する。
エクセルファイルにてA列からJ列までデータがあります。
行数は2,000行です。データは全て半角です。

A列の値が
1=入庫
2=出庫
3=戻入
と全て置換

B列の値が
1=社内品
2=社外品
3=受入
と全て置換。
でこのB列が3で受入に置換えたら
その隣のA列の値を
受入に置き換えたい。
さらに
A列の値が置換え後の入庫と戻入場合はその行のJ列の値を切り取り、K列に貼付をし
A列の値が置換え後の出庫の場合はその行のJ列の値を切り取り、L列に貼付をしたいです。

マクロの記録で行いましたが、
いったんデータを全て消して別データを貼り付けしたらA列B列の置換えは正常ですが
B列が3の場合にA列を再置換えと、J列の値を切り取り、K列、L列への貼付が
誤動作します。
(別データは雛形は同じです。入力規則も同じですがデータは変わります。
 例:セルA1のデータは1、 新しいデータはセルA1は2 等)


マクロの記録中では、並べ替えでソートし上記条件でセルを選択しコピペをしました。
並べ替えは2回です。
マクロ文を見ると、セル名がずらずら並んで、セル番号が指定されてます。
(マクロ記録中に選択したセル番号が全部記録されてます。)
文を見ると、上記条件で置換えやコピペでなく
このセルはこう置換え、このセルはこうコピペのように読めます。
これでは、データが代わったら、別の動きになるのかな?と思いました。
こういう場合はマクロではどうやって記録すればいいでしょうか?

マクロの記録で作成したマクロがデータが代わると誤動作する。
エクセルファイルにてA列からJ列までデータがあります。
行数は2,000行です。データは全て半角です。

A列の値が
1=入庫
2=出庫
3=戻入
と全て置換

B列の値が
1=社内品
2=社外品
3=受入
と全て置換。
でこのB列が3で受入に置換えたら
その隣のA列の値を
受入に置き換えたい。
さらに
A列の値が置換え後の入庫と戻入場合はその行のJ列の値を切り取り、K列に貼付をし
A列の値が置換え後の出庫の場合はその行のJ列の値を...続きを読む

Aベストアンサー

>ただ教えていただいた記述で試した所
>--略--
>でA列が出庫だったらその行のJ列を切り取りL列に貼り付けが
>出来なくてJ列に残っています。
>記述を見てもどこが原因かわかりませんでした。

マクロの問題ではありません。こちらの解釈と食い違いがあるからです。

1>>B列が3で受入に置換えたら
>>
2>>その隣のA列の値を受入に置き換えたい。
>>さらに
3>>A列の値が置換え後の  
↑ここは、「B列で3で受入に置き換えたら」とつながっていると解釈しました。
だから、B列で、「3=受入」というものがあって、成立するものと解釈しています。

そうでないものは無視されています。単に、A列が、入庫、戻入、出庫なら変化しません。

A列とB列の関係は、単に、B列の「受入」がある時、A列の同じ行を「受入」に直すものだけだったのしょうか。

'//
Sub ReplacingPrc1()
 Dim i As Long
 Dim Ar1 As Variant, Ar2 As Variant
 Dim LastRow As Long
 Ar1 = Array("", "入庫", "出庫", "戻入")
 Ar2 = Array("", "社内品", "リール", "受入")
 Application.ScreenUpdating = False
 LastRow = Cells(Rows.Count, 1).End(xlUp).Row
 For i = 1 To LastRow
  If IsNumeric(Cells(i, 1).Value) Then
   If Cells(i, 1).Value > 0 And Cells(i, 1).Value < 4 Then
    Cells(i, 1).Value = Ar1(Cells(i, 1).Value)
   End If
  End If
 Next
 For i = 1 To LastRow
  If IsNumeric(Cells(i, 2).Value) Then
   If Cells(i, 2).Value > 0 And Cells(i, 2).Value < 3 Then
    Cells(i, 2).Value = Ar2(Cells(i, 2).Value)
   ElseIf Cells(i, 2).Value = 3 Then
    Cells(i, 2).Value = Ar2(Cells(i, 2).Value)
    Cells(i, 1).Value = Cells(i, 2).Value
   End If
  End If
  If Cells(i, 10).Value <> "" Then 'J列--二度処理防止
   If Cells(i, 1).Value Like "入庫" Or Cells(i, 1).Value Like "戻入" Then
    Cells(i, 11).Value = Cells(i, 10).Value: Cells(i, 10).ClearContents
   ElseIf Cells(i, 1).Value Like "出庫" Then
    Cells(i, 12).Value = Cells(i, 10).Value: Cells(i, 10).ClearContents
   End If
  End If
 Next
 Application.ScreenUpdating = False
End Sub

>ただ教えていただいた記述で試した所
>--略--
>でA列が出庫だったらその行のJ列を切り取りL列に貼り付けが
>出来なくてJ列に残っています。
>記述を見てもどこが原因かわかりませんでした。

マクロの問題ではありません。こちらの解釈と食い違いがあるからです。

1>>B列が3で受入に置換えたら
>>
2>>その隣のA列の値を受入に置き換えたい。
>>さらに
3>>A列の値が置換え後の  
↑ここは、「B列で3で受入に置き換えたら」とつながっていると解釈しました。
だから、B列で、「3=受入」というものがあって、...続きを読む


人気Q&Aランキング

おすすめ情報