【先着1,000名様!】1,000円分をプレゼント!

マクロ初心者なのですが、どなたか教えてください。

自作のツールバーのボタンを押したら
そのボタンに対応するCSV形式のファイルから
データをひっぱってきて、自動でグラフ化するという
マクロを作りました。

私のパソコンでは正常に動くのですが
他の人のパソコンでそのファイルを開くと、
「このブックにあるVBAプロジェクト、
 ActiveXコントロール、およびその他のプログラミン
 グ関連の機能は失われています」
というメッセージボックスが出てきて
マクロが使えないんです。

私には全く理由が分からないので、どんな手がかりでも
いいので教えて下さい(;_;)よろしくお願いします。

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

A 回答 (3件)

こちらのケースが該当するのではないでしょうか。



VBA が有効でないときに使用できない Excel の機能
http://support.microsoft.com/default.aspx?scid=k …

原因としては
1)Excel 2002 をインストールするときに、VBA のインストール設定を [インストールしない] にしている
2)システム ポリシー [Disable VBA for Office Applications] を使用している
などが考えられるようです。

1)についてはこちら。
Office アプリケーションのマクロウイルス対策(「VBA をインストールしない」の項)
http://www.microsoft.com/japan/office/previous/x …
Visual Basic for Applications をインストールする手順
http://support.microsoft.com/default.aspx?scid=k …


2)についてはこちらが参考になるかもしれません。
Microsoft Office XP のセキュリティ設定(「Disable VBA for Office applications」の項)
http://www.microsoft.com/japan/technet/security/ …

参考URL:http://support.microsoft.com/default.aspx?scid=k …

この回答への補足

ご回答どうもありがとうございます!
あれから色々調べてみたのですが、試してみた人とは
また別の人のパソコンではマクロが正常に動いたんです。

どうやら初めに試した人のエクセルがVisualBasic Editorを使えない(灰色選択できない)ようなんです。
せっかく親切にお答えいただいたのに申し訳ないのですが
そのあたりもよくわからなくて・・・


教えていただいたものをインストールすると、
エディターも使えるようになるのでしょうか?
もしお時間よろしければ教えて下さいm(__)m

補足日時:2005/02/04 19:11
    • good
    • 0
この回答へのお礼

何かバタバタしてしまって申し訳ありません。
お陰様で原因がハッキリいたしました☆

とにかく詳しい原因がわかりましたので、
そのパソコンの持ち主のさんがサポート
センターに問い合わせることになりました。
(インストールしたかしてないか覚えてないそうで)

知識が乏しい上に混乱状態でご迷惑をおかけしました。
でも、まったく何も分からない状態の中的確なアドバイス
が頂けて、本当に助かりました!ありがとうございました(^^)

お礼日時:2005/02/04 19:51

そういう場合は、たしかアドインとかいうのを作成して、配布しないといけないです。

僕のもってる「できる大辞典ExcelVBA」という本には、その方法がのっていますが、長ったらしいので、簡単にやる方法を申しますと。

VBAのソースコードをフロッピーかなんかでテキストファイルにコピーして、他人のパソコンにペーストして、ツールバーのボタンにマクロを貼り付ける。これだと、5分くらいですみます。

僕も詳しくは知らないのですが、アドインを作成すると確かにたくさんのパソコンに配布するには便利かもしれませんが、1台だけだと時間を食いそうですよ。。

より詳しく知りたい場合は、本を見てください。あと、自作ツールバーのマクロのブックを他のフォルダに移動しても同じようなエラーが確かでます。

もっと簡単な方法があるのかな??

回答を待つともっといい方法がでてくるかもしれません。
    • good
    • 1
この回答へのお礼

ご回答どうもありがとうございます!
あれから色々調べてみたのですがどうやら
相手さんのパソコンがVisual Basic Editorを
開けない(灰色になっていて選択できない)のが
原因のようなんです。この人の他のパソコンで試したら
マクロが動いたんです。
本当に調査不足で質問してしまって申し訳ありませんでした。

お礼日時:2005/02/04 19:10

 他の人のパソコンのExcelを開いて、メニューの「ツール(T)→マクロ(M)→セキュリティ(S)」を開いてみよう。


 ここで「高」になっていたら、マクロは動かない。

 でも・・・・全然関係ないかも。一応試してみて・・・・。
    • good
    • 2
この回答へのお礼

お忙しい中、お答え頂いてありがとうございます!
すみません、これは私の質問不足でした・・・。
一応セキュリティも相手側に「低」にしてもらって
みたのですが、どうやら違う理由みたいなんです。
ちゃんと調べて、詳しく質問を書くべきでした。
でもでも、アドバイスありがとうございましたm(__)m

お礼日時:2005/02/04 19:05

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

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

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

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

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

Q別のパソコンでエクセルのマクロを使いたい

マクロの自動記録で保存したエクセルファイルを別のパソコンで使用したいのですが方法が分かりません。
この質問サイトにも同様のものがありましたが、よく解りませんでした。

以下、質問サイトを抜粋しました。
---------------------------------------------------------------------------
エクセルマクロファイルをメモリ等に保存し、エクセルを開いてマクロを有効にしてください。
 ツール→マクロでマクロ一覧が出て来て対象のマクロを選択、編集をクリックするとマクロ構文(VBE)が出てきます。・・・・・以下、略
---------------------------------------------------------------------------

ここでまず、エクセルマクロファイルをメモリに保存して、別のPCでエクセルファイルを開いてもマクロが出てきません。

いろいろ試してみたのですが、最初に作成したマクロはPERSONAL.XLSが含まれていましたが、メモリに保存されていなかったようです。

PERSONAL.XLSを表示させてそれだけを保存すれば、確かにそちらにはマクロが入っていました。

PERSONAL.XLSも一緒に保存するにはどうすればいいのでしょうか?

マクロの自動記録で保存したエクセルファイルを別のパソコンで使用したいのですが方法が分かりません。
この質問サイトにも同様のものがありましたが、よく解りませんでした。

以下、質問サイトを抜粋しました。
---------------------------------------------------------------------------
エクセルマクロファイルをメモリ等に保存し、エクセルを開いてマクロを有効にしてください。
 ツール→マクロでマクロ一覧が出て来て対象のマクロを選択、編集をクリックするとマクロ構文(VBE)が出てきます。・・・・...続きを読む

Aベストアンサー

こんばんは。

>保存先を個人用マクロ ブックで作成したものですが、これだと、別のパソコンに移すことは出来ないのでしょうか?

絶対にできないわけではありませんが、Excel等の個人用マクロブックの持ち出しはお勧めできません。例えば、どんなトラブルがあるかと言われても、具体的にコピーして移動したからということではないのですが、そのままでも、時々トラブルが発生するから、というしかありません。

>出来なければ、個人用マクロ ブックで作成したマクロを「作業中のブック」に保存しなおすことはできないのでしょうか

一旦、「作業中のブック」と選択しておいて、「ひとつのセルをクリック」すれば、仮のマクロが、Module(1) の中に、Sub Macro1() と出来上がります。そこに、Personal.xls を開いて、Module(1) にコードをコピー&ペーストすればよいです。

もう一つの方法は、モジュール全体をテキストにしてエクスポートする方法です。モジュールを右クリックすると、[ファイルのエクスポート]と出てきますから、それで出力して、それをUSBメモリ等に入れ、他のPCのExcelで、今度は、逆に、[ファイルのインポート]とすれば、モジュールのマクロコード全体が入ります。

なお、個人用マクロブックは、なるべく不要なマクロは置かないようにしてください。そうしないと、起動に時間が掛かったりするようになります。

私自身は、わざわざExcelブックやWordのドキュメントを、USBメモリにコピーしないで、マクロのコードを、メモ帳(NotePad)に貼り付け、テキスト保存して、それを別のパソコンのExcel等のModuleに貼り付けることもあります。よほど特殊なマクロでない限りは、これで十分です。

こんばんは。

>保存先を個人用マクロ ブックで作成したものですが、これだと、別のパソコンに移すことは出来ないのでしょうか?

絶対にできないわけではありませんが、Excel等の個人用マクロブックの持ち出しはお勧めできません。例えば、どんなトラブルがあるかと言われても、具体的にコピーして移動したからということではないのですが、そのままでも、時々トラブルが発生するから、というしかありません。

>出来なければ、個人用マクロ ブックで作成したマクロを「作業中のブック」に保存しなおすことはでき...続きを読む

Qエクセルでマクロを別のPCで利用するには

あるPCで利用しているエクセルのマクロを、別のPCのエクセルで利用したいのですが。
両PCとも、OSはWinXP_SP2でエクセルは2003です。
(2つのPCはオンライン上にありません)

Aベストアンサー

 別のPCのエクセルで利用するにはUSBメモリ、FDD,
CD-ROMで出来ます。
 私も自分で作ったマクロをこれらに入れ、会社で使っています。
 そのマクロがそのPC、エクセル上で動作するPERSONAL.XLSなのか、そのファイル、ブックのみの作業中のものだけか、開いている全てのブックに適用によって変わってきます。

 以前私もこれが分からなくて、この掲示板で教えていただきました。
 そのエクセルマクロファイルをメモリ等に保存し、エクセルを開いてマクロを有効にしてください。
 ツール→マクロでマクロ一覧が出て来て対象のマクロを選択、編集をクリックするとマクロ構文(VBE)が出てきます。

 ドライブのパス(E:\,C:\,D:\)ファイル、シート名を変更してやれば、定型作業の場合は同じ動作を忠実に実行すると思います。

 間違いがあれば、デバック画面が出て来て、警告のコメントが出ます。それを調べれば、どこにエラーがあるか、分かるようになって来ます。

 私は家のPCと会社のPCがリムーバブルドライブの表示が家PCはHやIで出るので会社ではE:\にパスを変えています。後は開くファイルの期日を変えています。これで数秒で処理が終わるのでチャレンジしてみてください!

 別のPCのエクセルで利用するにはUSBメモリ、FDD,
CD-ROMで出来ます。
 私も自分で作ったマクロをこれらに入れ、会社で使っています。
 そのマクロがそのPC、エクセル上で動作するPERSONAL.XLSなのか、そのファイル、ブックのみの作業中のものだけか、開いている全てのブックに適用によって変わってきます。

 以前私もこれが分からなくて、この掲示板で教えていただきました。
 そのエクセルマクロファイルをメモリ等に保存し、エクセルを開いてマクロを有効にしてください。
 ツール→マクロでマ...続きを読む

QEXCEL/VBAで、自分のPCだけエラーが出ます

下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるマクロですが、自分のPCだけ「Executeメソッドは失敗しました:Findオブジェクト」のエラーが出ます。
何が原因なのでしょうか、対処方法を教えて下さい。
ちなみに自分のPCは、EXCEL2003です。他のPCのEXCEL2003や自宅のEXCEL2007ではエラーは出ません。

Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim wordRange As Word.Range

Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.doc")
(途中略)
Set wordRange = wordDoc.Content
wordRange.Find.Execute "@一覧表", Forward:=True ←エラー
Range("B3:E9").Copy
wordRange.Paste

下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるマクロですが、自分のPCだけ「Executeメソッドは失敗しました:Findオブジェクト」のエラーが出ます。
何が原因なのでしょうか、対処方法を教えて下さい。
ちなみに自分のPCは、EXCEL2003です。他のPCのEXCEL2003や自宅のEXCEL2007ではエラーは出ません。

Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim wordRange As Word.Range

Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents....続きを読む

Aベストアンサー

補足です。
#4のimogasiさんの分で起きたエラーですが、マクロの問題ではないようです。私は、下位バージョンに対する、参照ライブラリのエラーだと思いましたが、どうやら違っていました。一度、Office のメインテしたほうがよいのかもしれません。

http://support.microsoft.com/kb/292744/ja
[BUG] Word のオートメーション クライアントで Find オブジェクトを呼び出す際にエラーが表示されるかクラッシュする

# 非管理下のシステムでこのエラーの発生を防ぐには遅延バインディングが唯一の方法です。

と書かれています。これを読んで、遅延バインディングにしたわけではありませんが、結果的には良かったようです。

Qエクセルのマクロが急に動かなくなった。

今朝まで正常に動いていたエクセルのマクロ起動ボタン、その他のコントロールツールが使えない状態になりました。別のファイルのマクロも同様に動きません。別のパソコンで試しましたが動きません。デザインモードはオフの状態は確認済みです。オプションのセキュリティーも確認しました。

エクセルは office personal2013
OSはWindows 8.1です。

Aベストアンサー

先週からこの問題だらけですね。 Microsoft Updateの影響かと思われます。

http://support2.microsoft.com/kb/3025036/ja
Tempフォルダ内の「MSForms.exd」を削除で。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル マクロ実行時エラー’1004’

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
    ReDim Preserve 氏名(行)
    社員CD(行) = Cells(行 + 1, 1).Value
    氏名(行) = Cells(行 + 1, 2).Value
    行 = 行 + 1
  Loop Until Cells(行, 1) = ""
  人数 = 行 - 2
  For 回数 = 1 To 人数
    Sheets(評価シート).Select
    Sheets(評価シート).Copy after:=Sheets(評価シート)
    ActiveSheet.Name = 氏名(回数)
    Cells(4, 5) = 氏名(回数)
    Cells(4, 3) = 社員CD(回数)
  Next 回数
End Sub
*****************************
よろしくお願いします

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
   ...続きを読む

Aベストアンサー

ひょっとしてこれに該当するのかな?

Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する
http://support.microsoft.com/kb/210684/ja

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

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

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

Aベストアンサー

こんにちは。

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

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

QExcel2010 マクロが利用できない

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

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

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

Aベストアンサー

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

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

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


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

人気Q&Aランキング