• 締切済み

お助け下さい!

こちらでは、いつも皆さんにお世話になっています。 早速ですが、教えて下さい。 エクセル2007でVBAを作成したのですが、作成したPC以外でVBAが上手く働きません。 例えば、Application ActivePrinter で、印刷するシートによってプリンターをしていたのですが、 切り換わらず、通常使用するプリンターに設定されているプリンターで印刷されてしまったり、 Workbook_Open()で、 ブックをオープンした時に別のブックを開くようにしたのですが、 それが開かなかったりしています。 作成したPCでは動作するので、VBAの組み方等は問題ないと思うのですが、 こちらでの他の方の質問や、本などを参考にしてみても、どうしても上手くいきません。 お手数おかけしますが、お助け下さい。 宜しくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

もし、Application.ActivePrinterにこだわらないのであれば、以下の様にしてはどうでしょう。 Worksheets("D").PrintOut ActivePrinter:="DocuPrint C3360" オブジェクト.PrintOut ActivePrinter:= ○○ なら、ポート名は不要です。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

コードを見る限り、作成したPCであってもちゃんと動きそうにないんですが……。不思議ですね。 Application.ActivePrinter にプリンタを設定するには、通常「プリンタ名 on ポート名」の形式で設定します。しかも、ポート名はOSが勝手に割り宛てた物になりますので、出力先が同じプリンタでもPCによって異なって当然なんです。 良く解りませんが、「作成したPC」では何らかの要因でポート名を付けなくても良くなっているが、他のPCは通常通りなのでポート名が必要になっているのだと思います。 他のPCでActivePrinterを設定したいのでしたら、各PCでポート名を確認して、Application.ActivePrinterの設定時にポート名を付けて設定して見てください。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

> プリンターはDocuPrinter C3380です。 実際にApplication.ActivePrinterを設定している辺りのプログラムコードを提示して見てください。

kuroneko1229
質問者

補足

mt2008さん、たびたびありがとうございます。 たびたび補足ですが、プリンターはもう1つ、DocuCenter C4300を使用ています。 こちらが通常使用するプリンターになっています。 で、コードですが、 Worksheet ("A").Printout Worksheet ("B").Printout Worksheet ("C").Printout Application.ActivePrinter = "DocuPrint C3360" (on Ne00: )は現在設定なしです。 xlsheet.PageSetup.PaperSize = xlPaperB4 Worksheet ("D").Printout こんな感じです。 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> Ne※※は、プリンターによって違っていたので、現在は省いてあります。 Application.ActivePrinterの設定には「Ne**」の部分が必要なはずだと思ったんですが……? 実際の所どんなコードでActivePrinterを指定しているのでしょうか?

kuroneko1229
質問者

補足

mt2008さん、たびたびありがとうございます。 プリンターはDocuPrinter C3380です。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

ActivePrinter の指定?が上手くいかない件は、実際の処理で何をやっているのかが良く解りませんが、コード中で設定するプリンタの名前を固定にして埋め込んでいるのなら、PCによってプリンタの名前が異なっているので、コードに埋め込まれているプリンタの名前が存在しないのでは無いでしょうか? #最後のNe**まで一致してしている必要があります。 Workbook_Openが動かないのはマクロを無効にしているから……って事はありませんか。

kuroneko1229
質問者

補足

mt2008さん、早速ありがとうございます。 説明不足ですみません。 プリンターは、LANで接続しています。 プリンター名は確認したところ、同じ名前でした。 Ne※※は、プリンターによって違っていたので、現在は省いてあります。 workopen~の件は、マクロは有効になっています。 以上です。 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プリンタ一覧を取得

    社内で複数のプリンタがあります、"複合機""ドットプリンタ""再生紙用プリンタ"などと名前を各クライアントに統一してつけて設定してあります、エクセルのVBAで特定のシートのみ"ドットプリンタ"で印刷するために strAPtr = Application.ActivePrinter で一旦通常のプリンタをバッファリングしておき Application.ActivePrinter = "ドットプリンタ" として印刷をかけ Application.ActivePrinter = strAPtr で戻すということをしたいのですが このドットプリンタがクライアントPCによって ActivePrinter = "ドットプリンタ on Ne02:"になったり ActivePrinter = "ドットプリンタ on Ne00:"になったりクライアントによっては ActivePrinter = "Ne00:のドットプリンタ"になったりして確定できません、 WinAPIを使ってプリンタの一覧の取得・・・という方法がありそうですがエクセルVBAで出来るのでしょうか、願わくばAPIを使わないで実現したいのですが知恵を貸してください

  • Excel2010 VBA

    すみません。 VBA独学勉強中の身です。 VBAにて Workbook Open で いろいろ試してコードを入れて閉じたところ、 ブックの起動ができなくなりました。 コードは、 Application.ActivePrinter = "プリンター名"(プリンター名はきちんと入れてます。) をいれました。(後で気づいたのですが、コレ自体間違っていました。) 100%読み込みまでは行きますが、 その後がず~っと読み込み中というか、 ブックの表示がされない状態です。 30件程度のデータなので、 バックアップを取っておいたデータ無しの ファイルに入れなおせば済むのですが、 起動する方法がもしあれば、教えて頂きたく 質問させていただきました。 よろしくお願いします。

  • エクセルファイルをオープンしたときの再計算について

    エクセルファイルをオープンすると自動的に再計算がされます。VBAを使って、Workbook_Open()で、再計算を止めると、当然、ブックを開いた時全てで再計算が停止してしまいます。 で、質問ですが、あるブックから他のブックを開いた時には、再計算を行なわない(あるブックにVBAを組み込んで・・(イベントは、ボタンにからめてもok!)にして、手動で他のブックを開いた時は、再計算を行なうようなことが出来るのでしょうか? VBA初心者の僕として、精一杯考えたのは、親となるブックから、他のブックを開いた時に、他のブックのWorkbook_Open()イベントが始る前にWorkbook_Open()を書き込めればできると思うのですが?そんなこと無理なのでは?って思います。どなたか?詳しい方いませんでしょうか?宜しくお願い致します。

  • excel vba 選択されたセルの範囲を別のセル

    excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。

  • EXCEL VBAでプリンタの設定方法について

    EXCEL VBAのプリンタの設定方法について質問があります。 Dim oApp As Object Dim WFM As Strin WFM = "\\Cl111\フォルダ\ファイル\" &Range("C3").Value & ".doc" Set oApp = CreateObject("Word.Application")  ’ワード起動 oApp.Visible = True oApp.Documents.Open WFM  ’文書を開く Application.ActivePrinter = "AAA on Ne00:"  ’プリンタ設定 oApp.activedocument.PrintOut Copies:=1, Background:=False  ’印刷 oApp.Quit SaveChanges:=False  ’ワード終了 Set oApp = Nothing このようなコードで、(1)ワードを開き、(2)プリンタを設定し、(3)印刷をする、という作業をしたいのですが、 Application.ActivePrinter = "AAA on Ne00:" ではプリンタの設定が変わらず、通常使うプリンターで印刷がされてしまいます。 ワードを開いて印刷することで何か特殊なコードが必要なのではないかと思うのですが、調べても該当するものが出てきませんでした。 どうぞよろしくお願いいたします。

  • excel vba についての質問です。book名を変更したときのマクロ

    excel vba についての質問です。 請求書と営業売上のそれぞれ違うbookがあるのですが、請求書に入力した値を営業売上管理のbookの売上シートと連動させています。 当たり前ですが、bookの名前が変わると今までに作ったマクロが動作しなくなります。それに対応できるソースがあれば教えて頂きたいです。簡単なbookとシート間の説明です。 workbook("請求書").worksheet("請求書") workbook("営業売上管理").worksheet("売上") と二つのbookがあります。 bookの名前が二つともかわっても対応できるようなマクロがあれば教えていただきたいです。 宜しくお願いします。

  • VBAで印刷時各シートをページに変換

    VBA初心者です。よろしくお願いします。 エクセルのVBAでやりたいことは下記事項です。 (1)csvファイルを読み込みシート1に展開する。 (2)シート1のデータをシート2に埋め込みグラフを作成する。 (3)シート3にシート2の部分的に拡大した埋め込みグラフを作成する。 (4)シート4に運転時の各設定値を表作成する。 (5)シート2から4までを選択したプリンタで印刷する。印刷はプリンタのプロパティ切り替えで両面印刷もできる。 ざっと、上記のことをやりたいのですが、なんとかインターネット等で調べて(1)から(4)までは動作するプログラムができましたが(5)のシート2から4までを選択したプリンタで印刷することは1ページに1シート片面印刷はできるのですが両面印刷でシート2から4までを印刷する部分が分かりません。 シート2,3はグラフなので用紙いっぱいに印刷したい。 どうすればよいか皆様ご教授よろしくお願いします。                                      以上

  • VBAで別ブックのシートを指定して削除したい。

    VBAで別ブックのシートを指定して削除したい。 エクセルでVBAを使用して、別ブックのシートを削除するアプリを作成しています。 これらのマクロを記述するエクセルとは別ブックのシートを削除したいです。 以下の記述だと、削除がされないようなのですがどのように記載したら 別ブックのシートを削除することが可能でしょうか。 エラー等は出ません。また、別ブックの情報も取ってこれているようですが、 削除ができません。。 どなたか教えてください。 'Excelを起動し、ファイルを開く Set xl = CreateObject("Excel.application") xl.Workbooks.Open fileName:=fileFullPath, ReadOnly:=False, IgnoreReadOnlyRecommended:=True '※fileFullPathがオープンするエクセルファイルです。 '"一覧"シートの1列目に「公開時削除」という文字が入っている行の2列目のテーブル名を取得 'シートの削除 Application.DisplayAlerts = False xl.ActiveWorkbook.Worksheets(deleteTableName).Delete   Application.DisplayAlerts = True   '※deleteTableNameは削除したいシートの名前が入ります。

  • Book1.xlsとBook2.xlsのエクセルファイルが有ります。

    Book1.xlsとBook2.xlsのエクセルファイルが有ります。 VBAを作成しているのはBook2.xlsで操作しています。 Book1 Sheet1 A B C 1 6 4 2 2 8 5 3 3 5 1 4 . Book1のシートのB列とC列には整数が入力されています。 A列には計算式が入ります。 例)A1の計算式 =B1+C1 A2の計算式 =B2+C2 A列の結果をBook2 Sheet1 のA列に反映しようとした場合に、 以下のVBAだと、計算式のコピーになってしまうので、計算結果の値を反映する事が出来ません。 A列の計算結果(上記の例だと、6,8,5)をまとめて反映させる方法はありますか? Sub tashizan() Dim thisBook As Workbook Dim workBook1 As Workbook Set thisBook = ThisWorkbook Set workBook1 = Workbooks.Open("C:\Documents and Settings\Book2.xls") thisBook.Worksheets("Sheet1").Range("A1:A100").Copy workBook1.Worksheets("Sheet1").Range("A1") workBook1.Close End Sub 初心者ですので、宜しくお願いします。

  • 他のBOOKにマクロを反映させない様にするには?

    Excel VBA初心者です。 エクセルのWorkbook Openイベントでワークシートメニューバーを非表示にしています。 マクロを作成したBookを開いてから他のBookを開いた場合はワークシートメニューバーは表示されるのですが(マクロは反映されない。)、他のBookを開いた後、マクロを作成したBookを開いた場合ワークシートメニューバーが他のBookまで非表示になってしまいます。(マクロが反映される。) マクロを作成したBookをその他Bookから常に独立させて(別のインスタンス?として開く??)開く様にするにはどうしたらよろしいでしょうか? 以下がOpenイベントです。 Private Sub Workbook_Open() Application.ScreenUpdating = False '動きを見せない Application.DisplayAlerts = False '選択画面をとばす Application.IgnoreRemoteRequests = True '他のアプリケーションを無視 Application.CommandBars("Worksheet Menu Bar").Enabled = False 'メニューバー非表示 ~以下長々とあります。~ End Sub 宜しくお願い致します。 ※メニューバー非表示は、社内に配布した場合にシート内容を変更されたくないためです。

専門家に質問してみよう