システムメンテナンスのお知らせ

エクセル2000 Windows7(管理者権限無し)
<ソフトを使うのであれば、フリーソフト>
Adobe、Acrobat 無し(Adobe Readerのみ)

以上の状況下でエクセルVBAを使って、
エクセル⇒PDF保存したいのですが、
検索の方法が悪いのか、どれかの条件で出来なくなってしまいます。

解決方法ご存知の方、ご教授いただけないでしょうか?><;

現状はCubePDFというソフトで手作業で変換しています。
(質問内容に不足部分ありましたら、補足いたします)

gooドクター

A 回答 (5件)

時間が足りなかったようですね



Application.Wait (Now + TimeValue("0:00:10"))← 0:00:20 とか増やす方法もありますが
環境によって変更するようだと、不細工なので
------ここから

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
'↑プリントアウト

Do
cuHw = FindWindow(vbNullString, "CubePDF 1.0.0RC4 (x64)")
Loop While cuHw = 0
'↑CubeBDFのウインドーが開いたかどうかを確認(この段階ではまだアクティブになるまで若干間がある)

SetForegroundWindow cuHw
'↑CubeBDFのウィンドーをアクティブ化

SendKeys "{ENTER}"

------ここまで

cuHw = FindWindow(vbNullString, "CubePDF 1.0.0RC4 (x64)")←この部分は環境によって変更の必要あり

"CubePDF 1.0.0RC4 (x64)" CubuPDFのバージョンに拠って変化します
添付画像を参考にして赤枠で囲まれたウィンド名に変更して下さい


Win32 API関数
SetForegroundWindow と  FindWindow を使用していますので

標準モジュールに
-----
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

-----
宣言文をおいて下さい
http://www.happy2-island.com/excelsmile/smile01/ …
「エクセルVBAでPDFを作成したい」の回答画像5

この回答への補足

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

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ', IgnorePrintAreas:=False
'↑プリントアウト
の部分を

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="CubePDF on Ne05:"
'↑ActivePrinter:="ここを変える" マクロの記録などで確認 <プリンタの設定>

に変えて使っています^^

2バイト文字のパス名の件は別で質問をあげることにします^^
助かりました!!ありがとうございます^^

補足日時:2013/10/28 10:34
    • good
    • 0
この回答へのお礼

ありがとうございます!!
目からウロコとはまさにこのことです!!!!m(__)m
ありがとうございます!


探す方も多い質問のようなので、
A1セルのファイル名を取得して保存するようにしたものをつけておきます。
(不完全なのでファイル名が英数字でないといけないようですが^^;)


【全て標準モジュール】(IgnorePrintAreas:=FalseはEXCEL2000では使えないらしいです)
~↓~以下~

Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

Sub WEB2525SANARIGATO()

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ', IgnorePrintAreas:=False
'↑プリントアウト

Do
cuHw = FindWindow(vbNullString, "CubePDF 1.0.0RC4 (x86)")
Loop While cuHw = 0
'↑CubeBDFのウインドーが開いたかどうかを確認(この段階ではまだアクティブになるまで若干間がある)


SetForegroundWindow cuHw
'↑CubeBDFのウィンドーをアクティブ化

Dim Fname As String
Fname = Range("A1") 'ファイル名を取得

PresentPrinter = Application.ActivePrinter
With CreateObject("Wscript.Shell") '保存先の所まで移動して名前をつける
.SendKeys "{TAB}"
.SendKeys "{TAB}"
.SendKeys "{TAB}"
.SendKeys "{TAB}"
.SendKeys "{TAB}"
.SendKeys Fname
.SendKeys "{ENTER}"
End With
Application.ActivePrinter = PresentPrinter
End Sub

お礼日時:2013/10/25 14:56

>この先、作成(保存)までいく方法ありますでしょうか?



デフォルトの状態でPDF化して構わなければ

Sheets("DEMO").PrintOut , ActivePrinter:="Cube PDF"

Application.Wait (Now + TimeValue("0:00:10")) 
'↑はCubePDFのウインドーが開ききるまでの待ち時間、数値は任意で指定

SendKeys "{ENTER}"


保存先やファイル名の変更、その他設定が必要な場合は
http://www.excel-vba.net/excel-application-006.h …

こちらを参考に、変更して下さい

この回答への補足

解答ありがとうございます^^

試してみたのですが、
Enterが CubePDF 上で押されておらず、
エクセル上でおされる形となり、
エクセルの選択セルが一つずれるだけになってしまいます^^;

CubePDFがアクティブになっていないんだとは思うのですが。。。やり方が><;
わかりますでしょうか?

補足日時:2013/10/25 09:07
    • good
    • 0
この回答へのお礼

”いけましたー”とお礼を入れたかったのですが
AppActivateなど色々試しては みたものの
CubePDFを選択させる方法がわかりませんでした^^;

選択する方法をお教えいただけないでしょうか?
~~~
必要かどうかわかりませんが、
cubepdf.exe の場所は
C:\Program Files\CubePDF\cubepdf.exe
です。

お礼日時:2013/10/25 10:55

管理者権限無しであれば新たなソフトのインストールは無理でしょう



>CubePDFというソフトで手作業で変換しています

CubeがインストールされているのであればCubePDFの仮想プリンターもインストールされていると思われます
ファイル⇒印刷 で使用するプリンターをCubePDFを選択すればPDFファイルが出力されるはずです

http://www.kananet.com/freesoft-cube-pdf/freesof …
    • good
    • 0
この回答へのお礼

解答ありがとうございます^^

Sheets("DEMO").PrintOut , ActivePrinter:="Cube PDF"

↑これで試してみたのですが、Cube PDFが起動するだけで、作成(保存)まで進んでくれないのです。。。

この先、作成(保存)までいく方法ありますでしょうか?><;

お礼日時:2013/10/24 13:31

追記。



http://freesoft-100.com/pasokon/pdf_maker.html

に「印刷すればPDFファイルが出来る」と言うフリーソフトがいっぱいあります。

エクセルやワードで「印刷するだけ」でPDFファイルが出来上がるので便利ですよ。

Adobeにも「印刷するとPDFになる」ってのがありますが、買うと高いです。

PDFにするのは「印刷すればよいだけ」なんで、エクセルVBAででも簡単に実行出来ます(ブックを印刷するマクロをVBAで書くだけ)

この回答への補足

何度もありがとうございます!
XPの時はPrimo使えたんですが><;

管理者権限が厳しいですね^^;
Primoは確かVBAでPDF化まで出来てた記憶があるんですけどね。。。
7は非対応で(T T)

補足日時:2013/10/24 13:38
    • good
    • 0

http://www.sourcenext.com/product/pdf/home/
の「無料体験版」を使うと、エクセルのファイルを一発でPDFファイルに出来ます。
    • good
    • 0
この回答へのお礼

早い解答ありがとうございます^^

早速試してみたのですが、

"アクセス権が不十分なためこのマシンのすべてのユーザーが使用できるように
アプリケーションをインストールすることはできません。
管理者としてログインし、再度インストールしてください。

ということで、インストールが途中で止まってしまいます^^;

会社のPCのため管理者としてはログインできないので、
この方法では、できないという結論にしました><すみません。。。

お礼日時:2013/10/24 11:55

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

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

gooドクター

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

人気Q&Aランキング