Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7225 / 13644 ツリー ←次へ | 前へ→

【40402】ブラウザでエクセルを実行したときの閉じ... けい 06/7/13(木) 11:40 質問[未読]
【40414】Re:ブラウザでエクセルを実行したときの... ハチ 06/7/13(木) 13:57 発言[未読]
【40415】Re:ブラウザでエクセルを実行したときの... けい 06/7/13(木) 15:01 回答[未読]
【40429】Re:ブラウザでエクセルを実行したときの... ハチ 06/7/13(木) 16:09 回答[未読]
【40433】Re:ブラウザでエクセルを実行したときの... けい 06/7/13(木) 17:06 回答[未読]
【40441】Re:ブラウザでエクセルを実行したときの... ハチ 06/7/13(木) 19:13 回答[未読]
【40452】Re:ブラウザでエクセルを実行したときの... ハチ 06/7/14(金) 0:56 発言[未読]

【40402】ブラウザでエクセルを実行したときの閉じ...
質問  けい  - 06/7/13(木) 11:40 -

引用なし
パスワード
   現在、ブラウザからマクロ付きエクセルファイルを呼び出し
マクロを自動実行させ、帳票を作成するシステムを作成しています。

詳細な動作
1.ブラウザから、http://aaaa.com/test_macro.xls という形で呼び出す。
2.呼び出されたtest_macro.xlsに含まれるAuto_Open()が自動実行される
3.Auto_Open()の中で、http://aaaa.com/test.csv を開く。
4.同じくAuto_Open()の中で新規ブックを作成、先ほどのtest.csvのワークシートをコピー
5.コピーされたワークシートに対してデザインなどの処理を実行
6.不要なtest_macro.xls と test.csv を閉じる

という1〜6の動作を行い、csvから帳票を作成したいのですが
1〜5までの動作は問題なく実行できますが、最後の6のところで
test.csvファイルは閉じることが出来ますが、おおもとのtest_macro.xlsが閉じれません。

test_macro.xlsが開いたままだと、完成した帳票をローカルに保存した場合
test_macro.xlsのマクロまで保存してしまうことが問題となっています。

完成した帳票を保存したときに、マクロが含まれないようにしたいのですが
何か良い方法はありますでしょうか?

試した方法↓
パターン1
  Workbooks("test.csv").Activate
  ActiveWorkbook.Close SaveChanges:=False
  Workbooks("test_macro.xls").Activate
  ActiveWorkbook.Close SaveChanges:=False

パターン2
  Windows("test.csv").Close SaveChanges:=False
  Windows("test_macro.xls").Close SaveChanges:=False


お手数おかけしますがよろしくお願いいたします。

【40414】Re:ブラウザでエクセルを実行したときの...
発言  ハチ  - 06/7/13(木) 13:57 -

引用なし
パスワード
   ▼けい さん:
>現在、ブラウザからマクロ付きエクセルファイルを呼び出し
>マクロを自動実行させ、帳票を作成するシステムを作成しています。
>

>という1〜6の動作を行い、csvから帳票を作成したいのですが
>1〜5までの動作は問題なく実行できますが、最後の6のところで
>test.csvファイルは閉じることが出来ますが、おおもとのtest_macro.xlsが閉じれません。

閉じれずにどうなのるですか?
エラー・・が出る 、メッセージ・・が出る など明確しないと解りません。

>test_macro.xlsが開いたままだと、完成した帳票をローカルに保存した場合
>test_macro.xlsのマクロまで保存してしまうことが問題となっています。

??意味がわかりません。
必要なのは、新規で作成したBookではないのですか?

>完成した帳票を保存したときに、マクロが含まれないようにしたいのですが
>何か良い方法はありますでしょうか?
>
>試した方法↓
>パターン1
>  Workbooks("test.csv").Activate
>  ActiveWorkbook.Close SaveChanges:=False
>  Workbooks("test_macro.xls").Activate
>  ActiveWorkbook.Close SaveChanges:=False
>
>パターン2
>  Windows("test.csv").Close SaveChanges:=False
>  Windows("test_macro.xls").Close SaveChanges:=False
>
>
>お手数おかけしますがよろしくお願いいたします。

他の部分のコードを提示しないと他の方には伝わらないのでは?

【40415】Re:ブラウザでエクセルを実行したときの...
回答  けい  - 06/7/13(木) 15:01 -

引用なし
パスワード
   ▼ハチ さん:

>閉じれずにどうなのるですか?
>エラー・・が出る 、メッセージ・・が出る など明確しないと解りません。

説明不足で申し訳ありません・・。

特にエラーやメッセージ等は出ません、
Visual Basic Editerを開いて確認してみると
test_macro.xls と 新規ブックのBook1.xlsの2つが存在する状態なので
test_macro.xlsが閉じられていないのだろうと思っているのですが・・


>>test_macro.xlsが開いたままだと、完成した帳票をローカルに保存した場合
>>test_macro.xlsのマクロまで保存してしまうことが問題となっています。
>
>??意味がわかりません。
>必要なのは、新規で作成したBookではないのですか?

そうです、新規で作成したBookのみを保存したいのですが
ブラウザの名前を付けて保存を押しローカルに保存すると
マクロまで保存されてしまいます。

>他の部分のコードを提示しないと他の方には伝わらないのでは?

こちらも情報不足ですみません。
以下のようなコードで実行しています。

Sub Auto_Open()

  Dim bookNM As String

  Workbooks.OpenText Filename:="test.csv"
  
  Workbooks.Add
  bookNM = ActiveWorkbook.Name
  
  Workbooks("test_macro.xls").Activate
  Sheets(1).Copy Before:=Workbooks(bookNM).Sheets(1)
  
  Workbooks("test_macro.xls").Activate
  Sheets(1).Copy Before:=Workbooks(bookNM).Sheets(1)
  Workbooks(bookNM).Activate
  
  Range("H1") = "確認用文字列"
  
  Windows("test.csv").Close SaveChanges:=False
  Windows("test_macro.xls").Close SaveChanges:=False
  
  Workbooks(bookNM).Activate
End Sub

よろしくお願いいたします

【40429】Re:ブラウザでエクセルを実行したときの...
回答  ハチ  - 06/7/13(木) 16:09 -

引用なし
パスワード
   ▼けい さん:
同じ環境が準備できなかったので正確な回答か自信がないのですが、
Web上で2つのBookを開くと確かにおかしな動作をしますね。

「作成されたBookをデスクトップ上に保存して閉じる」という案でどうでしょうか?
最後にMacro_test.xlsを閉じてしまうと
Web上では「サーバが見つかりません」エラーとなりました。
「デスクトップにファイルが作成されました。
このファイルを保存せずに閉じてください」とか書いたSheetを
Macro_testに準備しておき、
そのSheetをActiveにした状態で終わらせるほうが良いと思います。

他の方からより良い回答がつくかも。

Option Explicit

Sub Auto_Open()

Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim WSHobj As Object
Dim DtPath As String

'デスクトップパスの生成
Set WSHobj = CreateObject("WScript.Shell")
DtPath = WSHobj.SpecialFolders("Desktop")
Set WSHobj = Nothing

myPath = ThisWorkbook.Path
myFile = "test.csv"

'ローカルで実行できるようにパスを変更
Workbooks.OpenText Filename:=myPath & "\" & myFile

Set wb = Workbooks.Add

ThisWorkbook.Sheets(1).Copy Before:=wb.Sheets(1)
'test.csvを使っていないが、
'このあたりにtest.csvの処理がある??
ThisWorkbook.Sheets(1).Copy Before:=wb.Sheets(1)

wb.Worksheets(1).Range("H1") = "確認用文字列"

'test.csvを閉じる
Workbooks(myFile).Close False

'作成したBookをデスクトップへ保存して閉じる
wb.Close True, DtPath & "\作成したBook.xls"
Set wb = Nothing

'Macroのブックを閉じる
ThisWorkbook.Close False
'↑Macroのブックを閉じると、
'Web上では「サーバが見つかりません」エラーになります。

End Sub

【40433】Re:ブラウザでエクセルを実行したときの...
回答  けい  - 06/7/13(木) 17:06 -

引用なし
パスワード
   ▼ハチ さん:
>▼けい さん:
>同じ環境が準備できなかったので正確な回答か自信がないのですが、
>Web上で2つのBookを開くと確かにおかしな動作をしますね。
>
>「作成されたBookをデスクトップ上に保存して閉じる」という案でどうでしょうか?
>最後にMacro_test.xlsを閉じてしまうと
>Web上では「サーバが見つかりません」エラーとなりました。
>「デスクトップにファイルが作成されました。
>このファイルを保存せずに閉じてください」とか書いたSheetを
>Macro_testに準備しておき、
>そのSheetをActiveにした状態で終わらせるほうが良いと思います。
>

ありがとうございます。
的確な指示、感謝感激です!

教えて頂いたロジック確認させて頂きました。
こちらでもファイルを閉じてしまうと「サーバが見つかりません」となりました。
やはり2つ開くと動作がおかしくなりますね。


>「作成されたBookをデスクトップ上に保存して閉じる」という案でどうでしょうか?
仕様を変更可能か問い合わせてみましたが
現行の仕様では、ブラウザに結果の帳票を出力して
ユーザに保存するかどうかを選択してもらう、ということは変更不可とのことでした・・

うーん・・
もう少しで見えそうな気もするのですが・・。

【40441】Re:ブラウザでエクセルを実行したときの...
回答  ハチ  - 06/7/13(木) 19:13 -

引用なし
パスワード
   ▼けい さん:
書き込みの「種別」は"回答"以外でお願いします。

で、本題ですが・・・
自分の実力ではこのあたりで限界です。
別Bookを用意して、Excelアプリを別Windowに起動する方法を書いてみます。
これだと保存はせずに済みますが、「ブラウザ上で」との要件が満たせなくなります・・

新規ブックを作成して下記マクロを入れて
ブラウザから表示してみてください。
別アプリケーションで、結果のExcelのみが保存されない状態で残ります。
test_macro.xlsのキックするマクロ名はAuto_Open以外に変更したほうが良いです。
オートメーションエラーが発生するので、On Error Resume Nextしてます。

Option Explicit

Sub Auto_Open()

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")

On Error Resume Next
With xlApp
  .Visible = True
  AppActivate xlApp
  .Workbooks.Open Filename:=ThisWorkbook.Path & "\test_macro.xls"
  .Application.Run "test_macro.xls!Auto_Open"
End With
On Error GoTo 0

Set xlApp = Nothing

End Sub

【40452】Re:ブラウザでエクセルを実行したときの...
発言  ハチ  - 06/7/14(金) 0:56 -

引用なし
パスワード
   >AppActivate xlApp

これは効果なさそうなので削除してください。

7225 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free