エクセルVBAコンパイルエラー:プロジェクトまたはライブラリが見つかりません

このQ&Aのポイント
  • エクセルVBAを使用している際に、マクロボタンを押すと「コンパイルエラー: プロジェクトまたはライブラリが見つかりません」というエラーが表示されます。
  • 対象のエクセルデータは以前から存在しており、現在は作成者もおらず修正方法がわかりません。
  • 具体的な内容は、セルL1に印刷枚数、セルJ1に印刷回数を1ずつカウントしていくというものです。VBAの知識がなく解決方法もわかりません。
回答を見る
  • ベストアンサー

EXCEL VBA エラー

お世話になっております。 仕事で使用しているエクセルデータのマクロボタンを押すと コンパイルエラー: プロジェクトまたはライブラリが見つかりません。 と出てしまいます。 以前からあるデータなのですが、今は作成者もいないので修正方法すらわかりません。 当方VBAの知識がなく解決方法もわかりません。 内容は、 セルL1に印刷枚数 セルJ1に印刷回数を+1づつカウントしていく 説明がへたですみません。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/4/1 ' '前回までの件数を取得 ken = Range("l1") '印刷枚数の取得 maisuu = InputBox("印刷枚数を入力してください") '印刷 For I = 1 To maisuu ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True '印刷回数をカウント ken = ken + 1 'カウント数を表示 Range("l1").Value = ken Range("J1").Value = ken Next I '保存 ActiveWorkbook.Save End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

プログラムソースを確認いたしました。 このプログラム自体は問題が無く、エラーの原因はほかにありそうです。 ・エラーメッセージが出る時、マクロの編集画面が出て止まりませんか?  その時、黄色の帯でエラーの箇所を示しているはずです。 ・マクロの編集画面で、メニューの「ツール」「参照設定」を選んで下さい。  「参照可能なライブラリ」という欄にいくつかにチェックが入っていると思います。その内容を教えて下さい。

nightquest
質問者

お礼

ありがとうございます!! 参照設定を開いてみると 「参照不可:kingsoft office」 にチェックが入っておりました。 当方のパソコンにはkingsoftが入っていないので、それでうまく作動できなかったのですね。 チェックを外すと、うまく作動してくれました! 迅速なご対応、本当にありがとうございました。

関連するQ&A

  • エクセル マクロ 印刷指定

    マクロが解りません。色々調べてマクロの記録を使って、下記のマクロを作りました。 1枚目の印刷を2枚目、3枚目印刷として書き足してみました。 しかしエラーが出て2番目のシートからの印刷ができません。 Sub 連絡票印刷() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+p ' Sheets("連絡票").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("連絡票").Range("p1").Value, To:=Sheets("連絡票").Range("q1").Value, Collate:=True, IgnorePrintAreas:=False Sheets("予定表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("予定表").Range("y1").Value, To:=Sheets("予定表").Range("z2").Value, Collate:=True, IgnorePrintAreas:=False Sheets("配車表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("配車表").Range("s1").Value, To:=Sheets("配車表").Range("t2").Value, Collate:=True, IgnorePrintAreas:=False Dim str As String str = Worksheets("連絡票").Range("r1") Worksheets(str).Select End Sub いろいろ解らないなりに書き換えをしてみましたが、やっぱり2番目のシートから印刷ができません。 教えていただけませんでしょうか。

  • Excel VBAで自動印刷プログラムの作り方を教えて下さい。

    あるファイルにある全てのグラフを印刷するマクロを作りたいのですが、 どのようにすれば良いのでしょうか? Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub に何を付け足せば良いのでしょうか? 何卒よろしくお願い致します。

  • Excel VBAで他のシートを印刷するとき

    シート1からシート2を表示しないで印刷したいんですが下の記述だと一瞬ですがシート2が表示されます、どのようにすればシート1のままシート2を印刷することができるのでしょうか、よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2004/7/23 ユーザー名 : H ' Sheets("Sheet2").PrintOut Copies:=1, Collate:=True End Sub

  • VBAでA3サイズに印刷したい

    Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。

  • 【エクセル】 VBAでエラーが出てわかりません。。

    やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。

  • マクロについて

    マクロでデータをクリアするコマンドボタンを作りました。でも、計算の答えがでなくなりました。 例えば、 A1:A10までの情報はクリアになります。 答えの“=SUM(A1:A10)”というCセルだけが前の情報のままになります。(Cセルはマクロに登録していません。) 全くのど素人で、マクロの登録も他の書類からコピーしてセルだけ変えました。 マクロの内容は、下記の通りです。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 ' Sub allclear() Application.Calculation = xlManual Range("D4").Value = "" Range("B6").Value = "" Range("B8").Value = "" Range("E11").Value = "" Range("E12").Value = "" Range("F11").Value = "" Range("B21").Value = "" Range("B23").Value = "" Range("B25").Value = "" Range("B27").Value = "" Range("B29").Value = "" Range("P5:P9").Value = "" Range("Q5:Q9").Value = "" Range("P15:P19").Value = "" Range("Q15:Q19").Value = "" End Sub よろしくおねがいします。(_ _)

  • Excel VBA 実行時エラー'1004':

     どちらの処理がより高速であるのかを調べるため、以下の2つのVBAを試作致しました。 Sub Macroコピペ乱数() 'コピペ乱数 Sheets("Sheet4").Select Range("A1:A99999").Formula = "=RAND()" Columns("A").Value = Columns("A").Value Range("B1").Select End Sub 及び Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range("A" & i).Value = Rnd Next i Range("B1").Select End Sub  処が、これらのVBAを実際に動作させ様としますと、どちらの場合においても「Microsoft Visual Basic」ダイアログボックスが開いて 「実行時エラー'1004': 'Range'メソッドは失敗しました:'_Global'オブジェクト」 と表示されてしまいます。  さりとて、 Sub Macroコピペ乱数() 'コピペ乱数 Sheets("Sheet4").Select ActiveSheet.Range("A1:A99999").Formula = "=RAND()" Columns("A").Value = Columns("A").Value Range("B1").Select End Sub 及び Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range("A" & i).Value = Rnd Next i Range("B1").Select End Sub 或いは Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range(Cells(i, 1)).Value = Rnd Next i Range("B1").Select End Sub 等としましても、今度は 「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。」 となってしまいます。  どの部分がどの様に悪いのでしょうか?  そして、どの様に修正すれば良いのでしょうか?  尚、使用しておりますExcelのバージョンはExcel2010です。

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

  • エクセルVBAについて

    エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

  • エクセルで条件付きで罫線の斜線を引きたいです。

    エクセル2007についての質問です。 ある条件のときに罫線の右下がり斜線を引きたいのですが、条件付書式ではできません。 マクロでしなくてはいけないことはわかったのですが、それ以上は進めなくて困っています。 セル(U2)に数字を打ち込んだらセル(I10:J11),(I12:J13),(I14:J15),(L10:Q11),(L12:Q13),(L14:Q15)(結合したもの)にIF関数とINDEX関数を組み合わせて他のシートからセル(U2)に対応するデーターを呼び出しています。 セル(I10:J11)に呼び出した数値が10未満ならセル(L10:Q11)に罫線で右下がりの斜線を入れ、10以上なら右下がりの斜線を消すということが行いたいです。(他の2つの組み合わせでも同様) 3年前に同じ質問をさせていただき、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("I10").Value < 10 Then Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlContinuous Else Range("L10:Q11").Borders(xlDiagonalDown).LineStyle = xlNone End If End Sub という解答をいただき、解決したのですが、 マクロの起動は、シート内でセルの移動で実行されていました。 今回はいくつものデータを呼び出しながら印刷を一括で行うマクロと同時に使用することになり、 印刷中はシート内のセルの移動ができません。 何とかならないものかなぁと模索中ですが、皆さまからお力をいただけないかと 思っております。よろしくお願いします。