Excel2010 で、マクロが利用できません。

マクロのセキュリティを「全てのマクロを有効にする」に設定してもマクロが利用できません。

また、Excel2007で作成したマクロのファイルを開くと修復され、マクロのソースが消えます。

「Excel2010 マクロが利用できない」の質問画像

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

A 回答 (1件)

>Excel2010 で、マクロが利用できません。


Excel2010では、マクロが使える拡張子(.xlsm)とマクロが使えない拡張子(.xlsx)があります。そのため、マクロを使いたいときは、Excelを起動したら、「ファイル」→「名前を付けて保存」を選び、ファイルの種類を「マクロ有効ブック(.xlsm)」と選択し名前を付けて保存してあげれば、その保存したExcelファイルはマクロが使えるようになっているはずです。

>また、Excel2007で作成したマクロのファイルを開くと修復され、マクロのソースが消えます。
すいません。Excel2007は利用したことがないのでわからないです。
    • good
    • 0

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

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

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

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

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

QExcel 2003のVBAマクロデータをExcel 2007で見たい

Excel 2003のVBAマクロデータをExcel 2007で見たい。
Excel 2003でVBAマクロを登録したExcelファイルがありますが、今回、Excel 2007をインストールして、該当ファイルを開いたところ、「マクロデータを削除しました。」とメッセージが出て、VBEを起動してもマクロが見えなくなりました。OSはWindowsXP SP3です。Excel 2003で登録したVBAマクロをExcel 2007で削除されないで、次の2点について、可能にするにはどうすればよいか、ご教示願います。
(1)マクロデータを残す方法。
(2)マクロ起動する方法。

Aベストアンサー

インターネット検索ではヒットしませんね。

あまりはっきりした記憶ではないので、間違っているかもしれません。

前のVersion でも、通常はマクロありというダイアログ・メッセージで、マクロを有効にするか無効にするか出てくるはずです。それが出てこないで、マクロそのものが削除されるというのは、VBEditor 自体を使えるようにインストールしていないと、そういうことになったような気がしましたね。

そのExcelは、VBEditor は、開けるのですね。ただ、VBEditor を使えるようにしていますか。VBA は、特別のプログラムがインストールしていないと動きません。一応、VBAを使う予定だとして、一通りフルインストールしていますか?

QOffice2007 マクロの警告を表示して,有効にするかどうか選ぶ

Office2007 マクロの警告を表示して,有効にするかどうか選ぶ

 今日は,質問させていただきます.どうぞよろしくお願いいたします.

 Vista+Office2007でございます.
 ファイル起動の度にマクロ有効・無効を選択したいのですが,
そのような設定は可能でしょうか??
「セキュリティセンター」→「マクロの設定」からはそれらしいものが
見つかりませんが・・・

 もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく
お願い申し上げます.
どうぞよろしくお願いいたします.

Aベストアンサー

Excelの場合ですが…

■Excel のマクロのセキュリティ設定を変更する - Excel - Microsoft Office Online
 http://office.microsoft.com/ja-jp/excel/HP100969191041.aspx

ここを読む限り
 「開発(タブ) → 「コード」 → 「マクロのセキュリティ」
そののちに
 「マクロの設定」
だそうですが、この手順でも設定を見つけられないと言うことでしょうか

QExcel 2007FOM出版の「MCAS Excel2007完全マス

Excel 2007FOM出版の「MCAS Excel2007完全マスターI公認テキスト」を使用しており、インストールはできましたが、 プログラムの実行でエラーになりました。
 エラーの内容は以下の通りです。
「JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、ハンドルされていない例外はすべてコンピュータに登録されたJIT デバッガに設定されなければなりません。」
ちなみに私のパソコン環境はWindows7ですが、この本を買った方のレビューを見ると「Win7 64bitではXPモードにしないと使えません。」と書いています。パソコンが苦手ですので、解決方法をよろしくお願いいたします。

Aベストアンサー

taishu899さん 今晩は!
>Excel 2007FOM出版の「MCAS Excel2007完全マスターI公認テキスト」を使用しており、インストール>はできましたが、 プログラムの実行でエラーになりました。
確かにWindows7の64bit版では、動作できませんと明記されています。
Windows7の32bit版なので、インストールは出来ますね。
■Microsoft Certified Application Specialist(MCAS)よくあるご質問(FAQ)
http://www.fom.fujitsu.com/goods/faq/answermcas2007.html#program-12
概要:[Q]Windows 7 で、CD-ROMプログラムは正常に動作しますか?
[A]Windows 7 上で動作検証したところ、一部の問題を除き、Windows 7(32ビット)では動作可能です。ただし、下記問題のみ、正しい操作を行っても正解になりません。
「MCAS Excel 2007 完全マスター II 模擬問題集」 (FPT0714)第5回問題12
なお、Windows 7(64ビット)につきましては、現在のところ、お使いいただけません。
本出版物の製作当時、Windows 7 は発売前だったため、Windows 7 は動作保証の対象外となっております。Windows 7 には完全対応しておらず申し訳ございませんが、ご了承の上、お使いください。
■32bitアプリを64bit Windows 7で動かす「WOW64」
http://ascii.jp/elem/000/000/480/480200/  1ページ
http://ascii.jp/elem/000/000/480/480200/index-2.html  2ページ
http://ascii.jp/elem/000/000/480/480200/index-3.html  3ページ
概要:WOW64は、Intel64やAMD64で拡張された64bitの仕組みをうまく使って、64bit OSで32bitプログラムを動かしている。先に「WOW64という32bitエミュレーション機能」と書いたが、エミュレーションといっても、仮想マシンのようにx86命令を異なるCPUアーキテクチャーの命令に変更するわけではない。
WOW64は64bit Windows環境の上に32bit Windows環境を用意する互換機能だ。そのため、64bitと32bitのプログラムは事実上分断されている。
●Windows 7 があなたと PC に、シンプルな毎日をご提案します
http://www.microsoft.com/japan/windows/windows-7/default.aspx
概要:新しい Windows XP Mode をお使いいただくと、以前の Windows XP ビジネス ソフトウェアをお使いの Windows 7 デスクトップ上で実行することができます。

taishu899さん 今晩は!
>Excel 2007FOM出版の「MCAS Excel2007完全マスターI公認テキスト」を使用しており、インストール>はできましたが、 プログラムの実行でエラーになりました。
確かにWindows7の64bit版では、動作できませんと明記されています。
Windows7の32bit版なので、インストールは出来ますね。
■Microsoft Certified Application Specialist(MCAS)よくあるご質問(FAQ)
http://www.fom.fujitsu.com/goods/faq/answermcas2007.html#program-12
概要:[Q]Windows 7 で、CD-ROMプログラムは正常...続きを読む

QExcel2007VBAのランダム置換ソース

Excel(エクセル)2007VBAを使って、
「複数ある、同一の置換したい文字・数」 を 「複数の文字・数」 でランダムに置換したいのですが、
VBAソースが分かりません。

たとえば、

【A列】に
A1:私は(置換する所)と(置換する所)が得意です。
A2:彼は(置換する所)と(置換する所)と(置換する所)が特技です。
A3:彼女は(置換する所)と(置換する所)と(置換する所)と(置換する所)の選手です。
A4:彼らは(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)が好きです。
A5:あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。

と入力されている時に、

【B列】に
B1:拳闘
B2:柔道
B3:野球
B4:籠球
B5:打球
B6:羽球
B7:剣道
B8:卓球
B9:水泳
B10:避球

と入力したとします。

そして、コマンドボタンを押すと
【A列】にあるすべての 「(置換する所)」 を、 【B列】にある「拳闘」「柔道」「野球」「籠球」「打球」「羽球」「剣道」「卓球」「水泳」「避球」のどれかで必ず置換されるようにします(【ランダムで置換】されるようにしたいです)。

※置換の条件として、一つのセル内で同じ文字が重複しないようにしたいです。
(私は拳闘と拳闘が得意です。)
    ↑   ↑
同じ文字が2つ以上ある置換は失敗です。

---------------------------------
置換の成功例 (重複なしの置換)

◆置換前の【A列】A5
あの人は(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)をしたことがありません。
      ↓↓↓
◆置換後の【A列】A5
あの人は打球と柔道と水泳と剣道と避球と拳闘をしたことがありません。
---------------------------------

これが未完成のVBAソースです。
↓↓↓
Sub test_Click()
For Each CellA In Range("A1:A5").Cells
Rnd1 = Int(Rnd() * 10) + 1
Rnd2 = Int(Rnd() * 9) + 1
Rnd3 = Int(Rnd() * 8) + 1
Rnd4 = Int(Rnd() * 7) + 1
Rnd5 = Int(Rnd() * 6) + 1
Rnd6 = Int(Rnd() * 5) + 1
If Rnd2 = Rnd1 Then Rnd2 = Rnd2 + 1
If Rnd3 = Rnd2 Then Rnd3 = Rnd3 + 1
If Rnd4 = Rnd3 Then Rnd4 = Rnd4 + 1
If Rnd5 = Rnd4 Then Rnd5 = Rnd5 + 1
If Rnd6 = Rnd5 Then Rnd6 = Rnd6 + 1
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd1, 2), , 1)
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd2, 2), , 1)
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd3, 2), , 1)
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd4, 2), , 1)
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd5, 2), , 1)
CellA.Value = Replace(CellA, "(置換する所)", Cells(Rnd6, 2), , 1)
Next
End Sub

【補足】
※コマンドボタンを押すとランダム置換される仕様です。
※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。
※上記の【A列】【B列】の文字はあくまで例です。実際は、【A列】【B列】ともに自由に文字を変更できる応用の利く仕様にしたいです(Excelの【A列】【B列】に、文字を直接入力して変更するという意味です)。
※上記の【A列】が5行、【B列】が10行というのもあくまで例です。実際は、【A列】【B列】ともに何行にでも対応できる仕様にしたいです(具体的には【A列】【B列】ともに、10000行くらいまで対応できるのが理想です)。


長くなりましたが、ここまでの条件を満たすVBAソースが知りたいです。
どうかよろしくおねがいいたします。

Excel(エクセル)2007VBAを使って、
「複数ある、同一の置換したい文字・数」 を 「複数の文字・数」 でランダムに置換したいのですが、
VBAソースが分かりません。

たとえば、

【A列】に
A1:私は(置換する所)と(置換する所)が得意です。
A2:彼は(置換する所)と(置換する所)と(置換する所)が特技です。
A3:彼女は(置換する所)と(置換する所)と(置換する所)と(置換する所)の選手です。
A4:彼らは(置換する所)と(置換する所)と(置換する所)と(置換する所)と(置換する所)が好きです。
A5:あの人は(置換する所)と(...続きを読む

Aベストアンサー

こんにちわ

>※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。・・・とあるので、C列にコピーして処理しています。


Sub test_Click1()
Dim gyo As Long, rnd1 As Long
Dim sss As String, ttt As String
Dim CellA As Range
With ThisWorkbook.Sheets("Sheet1")
.Range("A:A").Copy .Range("C1")
gyo = .Range("B" & Rows.Count).End(xlUp).Row
For Each CellA In .Range("C1:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
sss = ""
Do Until InStr(CellA.Value, "(置換する所)") = 0
Do '重複チェック
rnd1 = Int(Rnd() * gyo) + 1
ttt = .Range("B" & rnd1).Value
If InStr(sss, ttt) = 0 Then
sss = sss & "," & ttt
Exit Do
End If
Loop
CellA.Value = Replace(CellA.Value, "(置換する所)", ttt, , 1)
Loop
Next CellA
End With
End Sub

こんにちわ

>※1回限定の置換ではなく、コマンドボタンを押すたびに(何度でも)ランダム置換できるようにしたいです。・・・とあるので、C列にコピーして処理しています。


Sub test_Click1()
Dim gyo As Long, rnd1 As Long
Dim sss As String, ttt As String
Dim CellA As Range
With ThisWorkbook.Sheets("Sheet1")
.Range("A:A").Copy .Range("C1")
gyo = .Range("B" & Rows.Count).End(xlUp).Row
For Each CellA In .Range("C1:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
...続きを読む

QEXCEL2007で検索結果を全て表示

sheet1
  A列 B列 C列 D列 E列 F列
1 set1 a-1 b-1
2 set2 c-1 c-2 c-3
3 set3 a-2 c-2 c-3 c-4 c-5
4 set4 b-1 b-2 b-3
5 set5 b-1 c-1 c-2 c-3
6 set6
7 set7
8 set8
...

A列にセット名、B列~F列に品番が入力されております。

sheet2
  A列 B列 C列 D列 E列 F列...
1 a-1 set1
2 a-2 set3
3 b-1 set1 set4 set5
4 c-1 set2
5 c-3 set2 set3 set5
6 b-4
7
...


sheet2のA列へ品番を貼付、その品番を含むセット名を
B列、C列と横へ増やしたいです。

一つの品番が、複数セットに含まれている場合があるので、
うまく表示することができず、困っております。

最終的には、
sheet2へ表示した全ての値(品番、セット名)を別シートへ1列に表示したいです。

恐れ入りますが、お力添えをお願い致します。

sheet1
  A列 B列 C列 D列 E列 F列
1 set1 a-1 b-1
2 set2 c-1 c-2 c-3
3 set3 a-2 c-2 c-3 c-4 c-5
4 set4 b-1 b-2 b-3
5 set5 b-1 c-1 c-2 c-3
6 set6
7 set7
8 set8
...

A列にセット名、B列~F列に品番が入力されております。

sheet2
  A列 B列 C列 D列 E列 F列...
1 a-1 set1
2 a-2 set3
3 b-1 set1 set4 set5
4 c-1 set2
5 c-3 set2 set3 set5
6 b-4
7
...


sheet2のA列へ品番を貼付、その品番を含むセット名を
B列、C...続きを読む

Aベストアンサー

No.2・4です。

>sheet2へ表示した全ての値(品番、セット名)を別シートへ1列に表示したいです。

というコトですので、もう一度コードを変更してみました。
Sheet1のデータをSheet2へ、Sheet2のデータをSheet3へ表示するようにしています。

「1列」というコトですが、
セット名をA列に、品番をB列に表示するようにしてみました。

Sub Sample3()
Dim i As Long, j As Long, cnt As Long, lastRow As Long, lastCol As Long
Dim myArea As Range, wS2 As Worksheet, wS3 As Worksheet
Dim myFound As Range, myFirst As Range
Set wS2 = Worksheets("Sheet2")
Set wS3 = Worksheets("Sheet3")
lastRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row
lastCol = wS2.UsedRange.Columns.Count
'▼Sheet2へ転記//
If lastRow > 1 And lastCol > 1 Then
Range(wS2.Cells(2, "B"), wS2.Cells(lastRow, lastCol)).ClearContents
End If
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .UsedRange.Columns.Count
Set myArea = Range(.Cells(2, "B"), .Cells(lastRow, lastCol))
For i = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
Set myFound = myArea.Find(what:=wS2.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not myFound Is Nothing Then
Set myFirst = myFound
wS2.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(myFound.Row, "A")
Do
Set myFound = myArea.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
wS2.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(myFound.Row, "A")
Loop
End If
Next i
'▼Sheet3へ転記//
wS3.Cells.ClearContents
For i = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To wS2.UsedRange.Columns.Count
If wS2.Cells(i, j) <> "" Then
cnt = cnt + 1
With wS3.Cells(cnt, "A")
.Value = wS2.Cells(i, "A")
.Offset(, 1) = wS2.Cells(i, j)
End With
End If
Next j
Next i
End With
MsgBox "完了"
End Sub

※ Sheet3はタイトル行なしで1行目から表示させています。m(_ _)m

No.2・4です。

>sheet2へ表示した全ての値(品番、セット名)を別シートへ1列に表示したいです。

というコトですので、もう一度コードを変更してみました。
Sheet1のデータをSheet2へ、Sheet2のデータをSheet3へ表示するようにしています。

「1列」というコトですが、
セット名をA列に、品番をB列に表示するようにしてみました。

Sub Sample3()
Dim i As Long, j As Long, cnt As Long, lastRow As Long, lastCol As Long
Dim myArea As Range, wS2 As Worksheet, wS3 As Worksheet
Dim myFound As Range, myFi...続きを読む


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報