Excel VBA質問箱 IV

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

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


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

【65769】Microsoft XPS Document Writerにつて ma 10/6/26(土) 13:43 質問[未読]
【65771】Re:Microsoft XPS Document Writerにつて neptune 10/6/26(土) 21:02 発言[未読]
【65772】Re:Microsoft XPS Document Writerにつて くそひねり 10/6/26(土) 21:56 発言[未読]
【65774】Re:Microsoft XPS Document Writerにつて ma 10/6/27(日) 3:36 お礼[未読]
【65778】Re:Microsoft XPS Document Writerにつて ma 10/6/27(日) 14:32 発言[未読]
【65789】Re:Microsoft XPS Document Writerにつて neptune 10/6/28(月) 11:19 発言[未読]
【65790】Re:Microsoft XPS Document Writerにつて neptune 10/6/28(月) 11:26 発言[未読]
【65796】Re:Microsoft XPS Document Writerにつて ma 10/6/28(月) 15:41 お礼[未読]

【65769】Microsoft XPS Document Writerにつて
質問  ma  - 10/6/26(土) 13:43 -

引用なし
パスワード
   こちらで色々、お世話になっているものです。

質問の内容は、Microsoft XPS Document Writerで保存してあるファイルのテキストデーターをコピーしてExeclに貼り付けする方法を考えています。

自分の今のスキルでは、とても無理なことはわかっているのですがやれるところまでやってみようと思います。
市販の、書籍には他のソフトが呼び出せると言う記事は見つけたのですが具体的にどう呼び出すのか?

また、開けたとしてコピーできるのか?

と考えています。


このような、質問の方法では解答が付きにくいのはわかっているのですが何かヒントだけでもいただければと思います。

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

【65771】Re:Microsoft XPS Document Writerにつて
発言  neptune  - 10/6/26(土) 21:02 -

引用なし
パスワード
   ▼ma さん:
Microsoft XPS Document Writerってのを知らなかったのでググってみました。
で、本当に殆ど情報がないですねぇ。

で、開くのはC++とか、C#とか、VBなどでラッパーというんですか、DLL
なりを作成して、やればできるような????
ht tp://www.microsoft.com/japan/whdc/xps/xps-read.mspx

出来たら教えて下さい。

【65772】Re:Microsoft XPS Document Writerにつて
発言  くそひねり  - 10/6/26(土) 21:56 -

引用なし
パスワード
   >市販の、書籍には他のソフトが呼び出せると言う記事は見つけたのですが具体的にどう呼び出すのか?

Microsoft XPS Document Writerは知らんのですが他のファイルを読み込む


a = Application.GetOpenFilename("ビットマップ,*.bmp")
これでaにFalseかファイルのフルパスが入るんでそれを元に読み込む

【65774】Re:Microsoft XPS Document Writerにつて
お礼  ma  - 10/6/27(日) 3:36 -

引用なし
パスワード
   neptuneさん くそひねりさん 教えていただきましてありがとうございました。

neptuneさんの

>開くのはC++とか、C#とか、VBなどでラッパーというんですか、DLL
なりを作成して、やればできるような????

を調べてみたのですが自分ではDLL作成できるほど知識は全然ないのです。
ただ、HPの中に「XPS ドキュメント API の概要」との記事があったのでAPIと言う物を設定すればいいのかな?考えています。


くそひねりさんの方法でも、呼び出せました。ありがとうございました。


とりあえず、自分なりに作ってみました。
どうも、初歩的なことで躓いています。

動作環境  XP SP3
      インターネットエクスプローラは7

xps と Exeecl BOOKは、同じフォルダに保存されています。


Sub tensou()
'Microsoft XPS Document Writerからのコピー貼り付けマクロ

Dim mypath As String
Dim myid As Long

mypath = ActiveWorkbook.Path & "\"

myid = Shell("C:\Program Files\Internet Explorer\iexplore.exe " & mypath & "発注一覧表.xps", vbNormalFocus)

AppActivate myid

↓ここからの、キーが送れていないみたいです。ここから、ディバックしていっても何も起こりません。

SendKeys "^A", True   'ctrl+A を転送する。全部指定
SendKeys "^C", True   'コピーする。

Application.Windows("商品一覧.xls").Activate

SendKeys "^V", True


End Sub


APIの設定が、できればいいのかな?

APIの設定をしたことが無いので、お分かりになる方がいらっしゃいましたらヒントなどを教えていただければと想います。

よろしくお願い致します。

自分でも、もう少し考えてみます。

【65778】Re:Microsoft XPS Document Writerにつて
発言  ma  - 10/6/27(日) 14:32 -

引用なし
パスワード
   動作環境  XP SP3
      Execl2003
      インターネットエクスプローラは7

xps と Exeecl BOOKは、同じフォルダに保存されています。

他の市販の本を読んでみて、時間を稼ぐことが必要かもと思って下記に書き換えました。

でも、結果は同じでした。
実行させると、画面は立ち上がるがコピー・貼り付けはしないで終了してしまいます。

もうしばらく、考えています。

Sub tensou()
'Microsoft XPS Document Writerからのコピー貼り付けマクロ

Dim mypath As String
Dim myid As Double  
mypath = ActiveWorkbook.Path & "\"

myid = Shell("C:\Program Files\Internet Explorer\iexplore.exe " & mypath & "発注一覧表.xps", vbNormalFocus)
With Application
  .Wait Time + TimeValue("00:00:30")

  AppActivate myid
  
  .Wait Time + TimeValue("00:00:05")
    SendKeys "^A", True   'ctrl+A を転送する。全部指定
  .Wait Time + TimeValue("00:00:45")
    SendKeys "^C", True   'コピーする。
  .Wait Time + TimeValue("00:00:45")
  
  .Windows("商品一覧.xls").Activate
  
  SendKeys "^V", True
  .Wait Time + TimeValue("00:00:45")
End With


End Sub


▼ma さん:
>neptuneさん くそひねりさん 教えていただきましてありがとうございました。
>
>neptuneさんの
>
>>開くのはC++とか、C#とか、VBなどでラッパーというんですか、DLL
>なりを作成して、やればできるような????
>
>を調べてみたのですが自分ではDLL作成できるほど知識は全然ないのです。
>ただ、HPの中に「XPS ドキュメント API の概要」との記事があったのでAPIと言う物を設定すればいいのかな?考えています。
>
>
>くそひねりさんの方法でも、呼び出せました。ありがとうございました。
>
>
>とりあえず、自分なりに作ってみました。
>どうも、初歩的なことで躓いています。
>
>動作環境  XP SP3
>      インターネットエクスプローラは7
>
>xps と Exeecl BOOKは、同じフォルダに保存されています。
>
>
>Sub tensou()
>'Microsoft XPS Document Writerからのコピー貼り付けマクロ
>
>Dim mypath As String
>Dim myid As Long
>
>mypath = ActiveWorkbook.Path & "\"
>
>myid = Shell("C:\Program Files\Internet Explorer\iexplore.exe " & mypath & "発注一覧表.xps", vbNormalFocus)
>
>AppActivate myid
>
>↓ここからの、キーが送れていないみたいです。ここから、ディバックしていっても何も起こりません。
>
>SendKeys "^A", True   'ctrl+A を転送する。全部指定
>SendKeys "^C", True   'コピーする。
>
>Application.Windows("商品一覧.xls").Activate
>
>SendKeys "^V", True
>
>
>End Sub
>
>
>APIの設定が、できればいいのかな?
>
>APIの設定をしたことが無いので、お分かりになる方がいらっしゃいましたらヒントなどを教えていただければと想います。
>
>よろしくお願い致します。
>
>自分でも、もう少し考えてみます。

【65789】Re:Microsoft XPS Document Writerにつて
発言  neptune  - 10/6/28(月) 11:19 -

引用なし
パスワード
   ▼ma さん:
>実行させると、画面は立ち上がるがコピー・貼り付けはしないで終了してしまいます。
>
>もうしばらく、考えています。
昨日、又、ちょっと調べてみました。で、結果、最初どうにかなるかも
しれませんってな事を書きましたが、これは現在の所、取り消します。

xpsファイルの作成はまぁどうやってもできそうな気はします。
(自分ではやってないのですが。)

検証環境Wind7 + IE8。xpは面倒なので何も検証してません。

IEでxpsファイルを開いた時は、Ctrl+Aは無効になっていました。
従って、少なくとも私の環境では、ma さんの検証コードは動作しなくても
それが、仕様です。

APIについて
こちらは当てにはなりませんので先にお断りしておきます。

サンプルソースを少し眺めてみましたが、どうもxpsファイル作成については
公開されているようですが、それを読み取るためのものはあるかどうかは
わかりませんでした。(あるとは思いますが?公開されているかどうかは別問題)
・・・まだ、1つのサンプルプログラムのそのほんの一部
しか見てないもので何とも言えませんが。

それと、参考資料は英語のものしかないようです。これが辛いですね。

ただ、xpsの仕様については日本語でも公開されているようですから
それが参考になるかもしれません。

いずれにしても、この手の質問はExcelの掲示板で質問するより、純粋の開発系の
言語の掲示板で質問した方がプロからもっと良いアドバイスが受けられます。
・・当然、アドバイスを理解する為にある程度のスキルは必要です。
Ex:VB C# C++など。

サンプル書いてくれってのは禁句です。指摘もここよりはキツイですけどね^ ^;
ただ、回答者に興味があれば黙っていても書いてくれますし。適切な質問
の仕方をすれば、役に立つ情報をいただける可能性は高いです。

#xpsって良いですね。O/Sかframeworkがあれば見られるからアクロバットリーダー
も必要ないですし。

【65790】Re:Microsoft XPS Document Writerにつて
発言  neptune  - 10/6/28(月) 11:26 -

引用なし
パスワード
   ▼ma さん:
連投御免。書き込んだ後MS見たらそれらしきものがありました。
XPS のサンプルってのが有りました。内容は見てませんけど。
ht tp://msdn.microsoft.com/ja-jp/library/ms771669.aspx

これらを参考にして、VBAからframeworkを使えば出来るかもしれませんね。
結構なスキルいるとは思いますけど。

【65796】Re:Microsoft XPS Document Writerにつて
お礼  ma  - 10/6/28(月) 15:41 -

引用なし
パスワード
   neptune さんお忙しい中調べていただきましてありがとうございました。

今回の件は、職場にソフトがあります。

Execlに吐き出しできるデータと、できないデーターが有ります。

Execlに、吐き出しできないデータは普通に紙に印刷はできます。

その中で、手動ですがプリンターの選択でPDFに吐き出しできるのを見つけて吐き出して呼び出してExeclにコピー・貼り付けをした所データーが1つのセルに文字と文字の間にスペースが入った状態で出てしまい他の方法は無いのかとプリンター設定を変えて吐き出しをしてみたら今回の「Microsoft XPS Document Writer」ならExeclに貼り付けしたときにセルとセルに元通りではないではないですが必要なデーターが入っていたのでこれをVBAでファイル開いてExeclに貼り付けできないものかと思い今回質問させていただきました。

今回は、今までやったこと無い他のアプリケーション呼び出してデーター貼り付けできれば作業効率が上がると思っていました。

今の自分の、スキルでは全然歯が立ちません。

ただ、諦めないで教えてくださった他のところで質問できるようになってから質問してみたいと想います。

ありがとうございました。


>▼ma さん:
>連投御免。書き込んだ後MS見たらそれらしきものがありました。
>XPS のサンプルってのが有りました。内容は見てませんけど。
>ht tp://msdn.microsoft.com/ja-jp/library/ms771669.aspx
>
>これらを参考にして、VBAからframeworkを使えば出来るかもしれませんね。
>結構なスキルいるとは思いますけど。

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