まず現在の状況を説明します。

PCのOS:Windows 7
あるシステムからサーバーにCSVデータを飛ばしています。
そのデータに反応してExcelのマクロが自動起動するようなプログラムをPC上で組んであります。

マクロの内容は、データを読んでプリンターから印刷する というものです。

ここで問題になるのが、データが飛んでくると自動でマクロを起動するので
マクロが動いている間は他の操作ができなくなってしまうという点です。(数分程度)
Excelを非表示にはしているのですが、裏で動いているので他の操作がフリーズしてしまいます。

マクロ自体は裏で動いているが、それが他の操作に影響しない という方法はありますでしょうか?

何卒宜しくお願い致します。

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

A 回答 (3件)

こんばんは。



>マクロ自体は裏で動いているが、それが他の操作に影響しない という方法はありますでしょうか?
オートメーション・オブジェクトにすればいいのでは?

この用語で、ググってみてください。

例:
http://home.att.ne.jp/zeta/gen/excel/c04p44.htm

私は、タイマーを使って、為替レートの自動読み込みを、Excelをメインで使っている最中に、自動的に起動して、自動的に終了するというコードを使っていました。気をつける点は、ひとつだけ、必ず、オブジェクトを残さないことです。異常終了なんてなると、見えないオブジェクトがのこっているので、手動で、オブジェクトを削除しなければなりません。最初は、タスクマネージャーで確認しながら使ってください。

なお、COMでExcelを使うと、終了方法がややこしくなりますから、辞めたほうがよいです。
    • good
    • 2

「今使ってるエクセルが」動かなくなるご相談と思いました。


どこが(何が)問題なのか絞り込まれていないので,あてずっぽで思いつきを並べるしかありませんね。


>プリンタがネックかも

「印字する」の部分を全てコメントアウトして実行してみて,問題が解消されるようなら確かにそうかもしれません。

ほかにも例えば,「CSVを読み込む」で止まってるのかもしれません。印刷用に何か作成している作業が問題なのかもしれません。
具体的にどんなマクロを動かしている(細かくどんな処理を積み上げている)のかを一つずつ潰して,実際にどの部分で「動かなくなる」のか解明してから,改めて対応策をご相談投稿なさってみてください。
    • good
    • 0

>そのデータに反応してExcelのマクロが自動起動するようなプログラムをPC上で組んであります。



これをどのように実現しているのかはご質問の範疇じゃありませんが,この部分を細工して「マクロを含んだブックを開いてマクロを動かす」んじゃなく,「エクセルを起動して所定のマクロを実行する」ように仕込みます。


例:
excel.exeのショートカットを用意,所定のブックを同時に開かせるようにして,当該ブックにWorkbook_Openマクロを付けておく
http://office.microsoft.com/ja-jp/excel-help/HA0 …
既存の(今使ってる最中の)エクセルとは別のエクセルが起動するので,作業中のエクセルは影響を受けません。必要に応じて/eオプションを併用するなど。また自動起動マクロには,最後にはapplcationをquitするように仕込んでおきます

この回答への補足

説明が足りずに申し訳ありません。
すでにそのようになっており、新規でExcelが開きます。

ここで言う他の操作というのは、例えばブラウザ操作であったり、他のアプリの操作まで固まってしまうのです。
恐らく連続でいくつもの印刷処理をするので、プリンタードライバーとのやりとりがネックになっているのかもしれません。

補足日時:2014/05/22 17:42
    • good
    • 0

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

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

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

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

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

Qエクセルマクロ シート名称と他のファイル間の操作について

シート名称に、「NY(1)」というように、()を使っています。
多分この()が原因だと思われますが、
Dim sh1 As worksheet
Set sh1 = worksheets("NY(1)")
と定義しても、うまく作動しません。
「実行時エラー”9” インデックスが有効範囲にありません。」
というメッセージが出てしまいます。
私の要望は、sheets("データ")上のコマンドボタンから、sheets("NY(1)")にあるプログラム(例えばコピーなど)を実行したいものです。
こういった場合、どのような定義?構文を組めば作動するでしょうか?
次に、このブック(ブック名=NY100)から(ブック名=NY200)のデータを操作する場合、(前者のブックにあるデータを、後者のブックに複写して、前者のコマンドボタンを押すことによって、後者のプログラム(例えばコピーなど)を実行させる)には、どのような定義?構文を組めば作動するでしょうか?
どなたか教えてください。
ちなみに、エクセル2003、OS=XPです。

Aベストアンサー

下記、
CommandButton1_Clickは、
  Workbooks("NY100.xls")のWorksheets("データ")の"C3:E8"を、
  同じブックのWorksheets("NY(1)")にコピーする例です。

CommandButton2_Clickは、
  Workbooks("NY100.xls")のWorksheets("データ")の"C3:E8"を、
  Workbooks("NY200.xls")のWorksheets("NY(2)")にコピーして、

  Workbooks("NY200.xls")のWorksheets("NY(2)")を、
  Workbooks("NY200.xls")のWorksheets("NY(2)COPY")にコピーする例です。
   2つのブックとも開いておく必要があります。


※「実行時エラー”9” インデックスが有効範囲にありません。」のエラーは
 シート名を間違えている場合もありますが、ボタンを使ってマクロを起動している場合、
 シートが選択されない(フォーカスがボタンにある)状態がよく起きます。
   コードに『ActiveCell.Activate』を挿入するか、
   ボタンのプロパティ『TakeFocusOnClick』をFalseにしてみて下さい。
   

CommandButton1、CommandButton2は、Worksheets("データ")に配置し、
下記コードはWorksheets("データ")のコードウインドウに書いています。

ご参考に。(Excel2000で確認)


Private Sub CommandButton1_Click()
  '// シートの定義
  Dim srcWS As Worksheet   '// コピー元ワークシート
  Dim desWS As Worksheet   '// コピー先ワークシート
    Set srcWS = Worksheets("データ")
    Set desWS = Worksheets("NY(1)")
  
  '// セルのコピー(C3:E8をコピー先シートの同じ位置にコピーする例)
  srcWS.Range("C3:E8").Copy Destination:=desWS.Range("C3")
End Sub

Private Sub CommandButton2_Click()
  '// ブックの定義
  Dim srcWB As Workbook    '// コピー元ブック
  Dim desWB As Workbook   '// コピー先ブック
    Set srcWB = Workbooks("NY100.xls")
    Set desWB = Workbooks("NY200.xls")
  
  '// シートの定義
  Dim srcWS As Worksheet   '// コピー元ワークシート
  Dim desWS1 As Worksheet   '// コピー先ワークシート1
  Dim desWS2 As Worksheet   '// コピー先ワークシート2
    Set srcWS = srcWB.Worksheets("データ")
    Set desWS1 = desWB.Worksheets("NY(2)")
    Set desWS2 = desWB.Worksheets("NY(2)COPY")
  
  '// ブック間でセルのコピー
  srcWS.Range("C3:E8").Copy Destination:=desWS1.Range("C3")
  
  '// コピー先ブックでのセルのコピー
  desWS1.Range("C3:E8").Copy Destination:=desWS2.Range("C3")
  
End Sub

下記、
CommandButton1_Clickは、
  Workbooks("NY100.xls")のWorksheets("データ")の"C3:E8"を、
  同じブックのWorksheets("NY(1)")にコピーする例です。

CommandButton2_Clickは、
  Workbooks("NY100.xls")のWorksheets("データ")の"C3:E8"を、
  Workbooks("NY200.xls")のWorksheets("NY(2)")にコピーして、

  Workbooks("NY200.xls")のWorksheets("NY(2)")を、
  Workbooks("NY200.xls")のWorksheets("NY(2)COPY")にコピーする例...続きを読む

Qセルにデータ有無でマクロ自動に起動する方法

エクセル セル A1 に品目コードを貼付けた瞬間に特定のマクロが起動する方法を教えてください。
セルA1 に C-GS5U0001 を貼付
セルB1 に A1を参照するVlookupがある。
せるC1 に B1をテキスト文字に変換する。
C1用のマクロは
Range("B1").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
セルA1にデータをいれたらC1に関数引当て無しのテキストにしたいのです。

Aベストアンサー

質問どおりにマクロにしたら以下の例のようになります。マクロは入力する「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range)
Const trg As String = "A1" '値を貼り付けるセルのアドレス
 If Target.Address = Range(trg).Address Then
  Range("B1").Copy
  Range("C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
  Application.CutCopyMode = False
 End If
End Sub

でもマクロ中で値を検索してC1セルに貼り付ける方が普通かもしれませんね。

Qマクロ:他シートにデータをコピーしたい

Excelのマクロについてです。
シート1にデータが有り、その中のB列に「済」と記入されている行のみ
シート2にコピーして転記したいのです。

これだけなら簡単なのですが
データ内には複数行にまたがってのセル結合がされてあったり
図形描写やテキストボックス等も混ざってあります。
それらもまとめてコピーしたいのですが、マクロで何とかなるのでしょうか?

Aベストアンサー

図形やテキストボックスの内容なら、「済」判断できないと思います...

Qエクセルのマクロを使ったファイルが他のPCで動きません。

マクロ超初心者です。
マクロは自動記録で登録しました。
40個くらいのマクロを自動記録して、
それを連続して実行できるようにしました。
自分のPCでは問題なく作動します。

そのエクセルファイルをメール添付で友人に送りました。
ところが友人のPCではエラーになり実行できません。
「実行時エラー1004
runメソッドは失敗しました。applicationオブジェクト」
と表示されるそうです。
個々のマクロを単独で実行しても出来ません。

そこで送ったファイルと同じファイルのマクロを全てエクスポートして
そのファイルを友人に送り、それをインポートしてもらいました。
Visual Basic Editorで確認してもらうとそのファイルはインポートされたようですが、上記のエラーになります。
マクロのファイルは「module1.bas」のような標準モジュールです。
どうすればマクロを実行できるようになりますか?
初心者でも分かるような回答をよろしくお願いいたします。

Aベストアンサー

何かを起動するような動作をさせているんですか?
そういう前提で話をしますと、

あなたと友人とでは、起動させるプログラムが保存されている場所が違うから失敗するのではないでしょうか。

初心者で大変かもしれませんが、
Application.run "XXXXXXXX"
って書かれている部分を、友人に合わせて書き換えてあげる必要があるかもしれません。

QExcelのマクロで他のフォルダからデータを引っ張ってくることは可能ですか?

初歩的な質問だとは思いますが、自分の知識では足りないので皆さんの知恵を貸してください。

今開いているExcelのシートに、違うフォルダに入っているExcelのデータをマクロひとつで貼り付けることは可能でしょうか?
可能ならそのマクロの作り方を伝授していただけないでしょうか。

※違うフォルダに入っているExcelのタイトルは定まっていない状態です。
例えば今日はAというタイトルのExcelが入っていますが、明日はBというタイトル、明後日はCというタイトルのExcelがそのフォルダに入ってます。

みなさん、どうかよろしくお願いいたします。

Aベストアンサー

他のフォルダを参照させ、コピー&ぺーストすることは可能です。

一度、「マクロの記録」で、手動で他のフォルダにあるブック操作を行ってください。
記録されたマクロ(実際にはVBA)を改造して、「定まっていない状態」の部分を変数で変更可能にすればOK。
・ダイアログで指定させるも良し
・セルに対象のブック情報を書くも良し


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

人気Q&Aランキング

おすすめ情報