AcrobatのPDFファイルをファイル名指定するプログラムを書きたいと思って、以下のようなWord2000のVBAプログラムを試しました。(コントロールパネルで、通常使うプリンタは、Acrobat PDFWriterにしてあります。)
WindowsNT4.0ならば、大丈夫なのですが、Windows98で同じことをすると、ファイル名が指定したことになりません。
対処方法等ご存知の方がおられましたらぜひ教えてください。

Sub MacroTest()
Application.PrintOut OutputFileName:="c:\test", _
Append:=False
End Sub

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

A 回答 (1件)

Excel2000のVBAとAcrobat PDFWriterの組み合わせでよければ



現在開いているワークブックにPDFという名前をつけて保存します。
-----------------------------------------------------
Sub AutoPDF()

ThisWorkbook.PrintOut , , , , "Acrobat PDFWriter", , , "C:\PDF"

End Sub
-----------------------------------------------------
これでC直下にPDF.pdfというファイルが生成されると思います。
    • good
    • 0

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

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

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

QPublicで宣言した時は「End Sub」でマクロが終わっても変数は保存されるのですか?

Public test As Boolean
Sub マクロ1()
test = True
End Sub

をステップインでデバッグしながら実行する時に
一番最初はtestにカーソルをあてるとFalseなのですが
一度「End Sub」まで到達しもう一度「Sub マクロ1()」から始めると
test = True
を通過する前から
testにカーソルをあてるとTrueになります。
でもデバッグ中に四角ボタンで停止するとFalseに戻ります。
そもそもBoolean型の規定値はFalseですよね?
これはどういうことなのでしょうか?

ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

今まで、そんなことは考えてみたことはありませんが、たぶん、確保した変数が、途中で止めることで、壊れてしまうのだと思いますね。ただ、どこにも、こんな話は書かれていないと思います。あえていうなら、不完全なマクロがあるようなプロジェクトでは、Public 変数は置けないということでしょう。

例えば、このようにしてエラーを発生させても、test の値は確保できません。

'--------------------------------------
'第一テスト

Public test As Boolean
Sub マクロ1()
  Dim a As Long
  test = True
  a = "A" '←エラーを発生させる
End Sub

''End Sub まで、来ないと値を確保できないのです。

'--------------------------------------
'第二テスト

Public test As Boolean
Sub マクロ1() '1
  MsgBox test
  test = True
End Sub

Sub マクロ2() '2
  Dim a As Long
  test = True
  a = "A" '←エラーを発生させる
End Sub

'1 --> 2 (エラー発生) -->3 で、チェックする。
'--------------------------------------
これで分かるのは、エラーが発生すると、今まで確保した値が飛んでしまうということです。
だから、必ず、On Error トラップで、最低でも、End Sub まで持ってこさせなくてはなりませんが、次の例の場合は、やはり、変数の値は確保できません。

'--------------------------------------
'第三テスト

Public test As Boolean
Sub マクロ3()
  MsgBox test
  test = True
  Call マクロ4
End Sub

Sub マクロ4()
  Dim a As Long
  On Error GoTo ErrHandler
  a = "A"
ErrHandler:
  If Err.Number > 0 Then
   End
  End If
End Sub

'マクロ3のみ
'--------------------------------------
以下の、コメントブロックして、マクロ3に戻って、End Sub をすれば、値は確保できます。
'  If Err.Number > 0 Then
'   End
'  End If

こんばんは。

今まで、そんなことは考えてみたことはありませんが、たぶん、確保した変数が、途中で止めることで、壊れてしまうのだと思いますね。ただ、どこにも、こんな話は書かれていないと思います。あえていうなら、不完全なマクロがあるようなプロジェクトでは、Public 変数は置けないということでしょう。

例えば、このようにしてエラーを発生させても、test の値は確保できません。

'--------------------------------------
'第一テスト

Public test As Boolean
Sub マクロ1()
  Dim a ...続きを読む

QワードのマクロにおけるPrintOut

マクロで、ワード文書を印刷しようとしています。
普通に Application.PrintOut で、印刷はできるのですが、
From,To,Copiesを指定しようとすると、構文エラーとかが、出てきます。

Application.PrintOut From:=1,To:=2,Copies:=1
Application.PrintOut( From:=1,To:=2,Copies:=1)

いずれも、うまく行っていません。
サジェスチョンをお願い致します。

尚、環境は Windows10,Office2010です。
本当は、Excel2010からWordをコントロールしていますが、
まずは、Word自体で、うまく行っていない状況です。

Aベストアンサー

PrintOutメソッドにてFromとToを使う場合は、RengeでwdPrintFromToを
指定して数値を文字列として指定する必要があります。
https://msdn.microsoft.com/ja-jp/library/office/ff837331(v=office.15).aspx

ActiveDocument.PrintOut Range:=wdPrintFromTo, From:="2", To:="3"

これ以外でもRangeでWdPrintOutRange 列挙を指定することで、様々な
指定ができます。
https://msdn.microsoft.com/JA-JP/library/office/ff192576.aspx

例えば、ページ範囲なら
ActiveDocument.PrintOut Range:=wdPrintRangeOfPages, Pages:="2-3"
と書きます。


[印刷]ダイアログを出したものでマクロ記録したものが、以下のように
記録されます。

Sub 印刷指定()
'
Application.PrintOut FileName:="", _
 Range:=wdPrintRangeOfPages, _
 Copies:=2, _
 Pages:="1-2", _
' これ以降も省略可能
 Item:= wdPrintDocumentContent, _
 PageType:= wdPrintAllPages, _
 ManualDuplexPrint:=False, _
 Collate:=True, Background:= True, _
 PrintToFile:=False, _
 PrintZoomColumn:=0, _
 PrintZoomRow:=0, _
 PrintZoomPaperWidth:=0, _ 
 PrintZoomPaperHeight:=0

End Sub

PrintOutメソッドにてFromとToを使う場合は、RengeでwdPrintFromToを
指定して数値を文字列として指定する必要があります。
https://msdn.microsoft.com/ja-jp/library/office/ff837331(v=office.15).aspx

ActiveDocument.PrintOut Range:=wdPrintFromTo, From:="2", To:="3"

これ以外でもRangeでWdPrintOutRange 列挙を指定することで、様々な
指定ができます。
https://msdn.microsoft.com/JA-JP/library/office/ff192576.aspx

例えば、ページ範囲なら
ActiveDocument.PrintOut Range:=wdPrintRangeOfPages,...続きを読む

Qword:表:文字列の折り返し:ページをまたぐ場合

挿入した表がページをまたいでいる場合の文字列の折り返しについての質問です。

問題は「表がページをまたいでいる場合、『文字列を折り返す』設定にしても、文字がページをまたがない」ということです。つまり、表が1ページ目と2ページ目をまたいでいる場合、『文字列を折り返す』設定にしても、2ページの表の途中から文字が折り返され始める、ということです。

画像を添付しますので、そちらもご確認ください。ちなみに、折り返しの設定はいじっておりません。

Aベストアンサー

表の場合の[文字列の折り返し]では、図や図形(オートシェイプ)などにある
[文字列の折り返し]とは違います。

表は、常に挿入した場所に段落として存在します。
段落なので、ページをまたいでも表として存在できます。
一方、図などの場合は浮動配置にすることでアンカーを段落と関連付けて、
アンカーのある段落に影響されます。このアンカーは、段落の先頭位置に
基本的にあるので、その段落があるページに残り、ページをまたいで図が
存在することはできません。

[下書き表示]をしてみればわかりますが、表を挿入した段落と段落の間に
常に表はありますので、表が[文字列の折り返し]でページをまたぐ場合は、
表の下の段落は、次ページの表の下にあるということになります。

表の場合の[文字列の折り返し]を指定しないと、表の下に段落記号がある
ことは確認できると思います。この表の下の段落記号が表が現在ある位置
を示しています。ですから、ページをまたぐ場合の表は次ページに段落が
あることになります。そのために文字列の折り返しは次ページのみにしか
設定されません。

アンカーがある図などの場合では、表とは逆に段落の先頭文字のように、
その段落の先頭へと常にあるということになります。ですから図に対する
[文字列の折り返し]は、アンカーと関連する前ページにのみでしか設定が
されないのです。

どうしても[文字列の折り返し]を維持しながら、ページをまたぐ表を作成
したいのなら、[テキストボックス]を用意し[文字列の折り返し]を[四角]
などに指定して、その中に表を挿入してください。
次ページにまたぐために、[テキストボックスのリンク]の機能を使って、
次ページにあるテキストボックスへと流し込みし、これによってページを
またぐしかないと思います。
http://www.eurus.dti.ne.jp/~yoneyama/Word/w-texbox_link.htm
http://yamanjo.net/senior/word/word_19.html

表の場合の[文字列の折り返し]では、図や図形(オートシェイプ)などにある
[文字列の折り返し]とは違います。

表は、常に挿入した場所に段落として存在します。
段落なので、ページをまたいでも表として存在できます。
一方、図などの場合は浮動配置にすることでアンカーを段落と関連付けて、
アンカーのある段落に影響されます。このアンカーは、段落の先頭位置に
基本的にあるので、その段落があるページに残り、ページをまたいで図が
存在することはできません。

[下書き表示]をしてみればわかりますが、表...続きを読む

QApplication.ExecuteExcel4Macroなに?

No.373903を拝見しまして、閉じたままのブックを参照できるらしいので使いたいのですが、ブックが複数ある場合、[ ]内はどのように書けば良いのでしょう?
例)
Cells(1, 1) = Application.ExecuteExcel4Macro _
("'C:\My Documents\[Book2.xls]Sheet1'!R1C1")

Book2・sheet1の部分が可変。

また、
Application.ExecuteExcel4Macro("get.document(50)")

Application.ExecuteExcel4Macro ("Halt(True)")
等の使い方もあるようですが、どなたかわかりやすく教えて頂けませんか?

Aベストアンサー

> この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。
> この使い方の意味とかはどういう事なのでしょうか?

普通に別ブックにリンクを貼ってリンク元ブックを閉じるとセルに下記のような式が残ります。
='C:\My Documents\[Book1.xls]Sheet1'!$A$1
これを変数を交えた文字列にしてあげるだけです。

文字列として直に書く場合は""で括ります。
例えば、↓ここまではいつも同じなので""で括ります。
"='C:\My Documents\["

変数などと繋ぐ場合は & で繋ぎます。
"='C:\My Documents\[" & 変数1

さらにいつも同じ部分を""で括って & で結合
"='C:\My Documents\[" & 変数1 & "]"

またまた変数にしたい部分を & で結合
"='C:\My Documents\[" & 変数1 & "]" & 変数2

最後にいつも同じ部分を""で括って & で結合して完成

"='C:\My Documents\[" & 変数1 & "]" & 変数2 & "'!$A$1"

これで変数1に Book1.xls を代入し、変数2に Sheet1 を代入してやれば元の式が出来ます。

Sub aaa()
 変数1 = "Book1.xls"
 変数2 = "Sheet1"
 MsgBox "元構文:='C:\My Documents\[Book1.xls]Sheet1'!$A$1" _
     & vbCrLf & _
     "変数化:='C:\My Documents\[" & 変数1 & "]" & 変数2 & "'!$A$1"
End Sub

> Application.ExecuteExcel4Macro
> の構文については他にはどのように使ってらっしゃるのでしょうか?

使ってません。
下位互換用に残してあるのでは無いかと思います。
使わなくても同様の事が実現出来るハズです。

> この「’」「[ ]」とかでややこしくなって、変数を使った場合がミスってばかりいました。
> この使い方の意味とかはどういう事なのでしょうか?

普通に別ブックにリンクを貼ってリンク元ブックを閉じるとセルに下記のような式が残ります。
='C:\My Documents\[Book1.xls]Sheet1'!$A$1
これを変数を交えた文字列にしてあげるだけです。

文字列として直に書く場合は""で括ります。
例えば、↓ここまではいつも同じなので""で括ります。
"='C:\My Documents\["

変数などと繋ぐ場合は & で繋ぎます。...続きを読む

QApplication.Gobackが動かない?

Windows XP+Word2003で、文書を開いた時に直前の編集位置に飛ばすために、標準モジュールに以下のコードを設定しているのですが…
  Sub AutoOpen()
    Application.GoBack
  End Sub
以前は動いていたのですが、いつの間にか動かなくなってしまいました。

Application.GoBackの前にMsgBoxを追加すると、文書を開いた時にちゃんと文字が表示されるので、AutoOpen()には飛んで来ています。
また、ツール→マクロでAutoOpenを実行すると、期待通り直前の編集位置にジャンプします。
また、文書を開いた時にShift+F5を押すと、やはりちゃんとジャンプします。

特定の文書ファイルだけではなく、どのファイルでも同じです。

標準モジュールを一旦解放して作り直したり、Officeを再インストールしたり、その他色々試してみましたが、どうしても直りません。
原因として、何が考えられるでしょうか?

Aベストアンサー

こんにちは。

原因は分かりません。それは、Word 2003 としては、Microsoft サポートにも出ていませんが、こちらも同じです。当面は、標準モジュールはやめて、[ThisDocumentモジュール]側に入れてみてください。

Private Sub Document_Open()
 On Error Resume Next
  Application.GoBack
 On Error GoTo 0
End Sub

うまく行かなかった場合は、以下を参考にして、Word 2007用の方法も可能です。

http://support.microsoft.com/kb/942482/ja
Word マクロ有効文書 (.docm) 形式の Word 文書を開くときに Open イベントの Bookmarks.Select で指定したページが表示されない

ただし、Word 2003 で、Office Converter アドインを使って、Word 2007 のDocument を開くと、おそらくハングしますから、そのマクロの考え方自体を編集しないといけません。

こんにちは。

原因は分かりません。それは、Word 2003 としては、Microsoft サポートにも出ていませんが、こちらも同じです。当面は、標準モジュールはやめて、[ThisDocumentモジュール]側に入れてみてください。

Private Sub Document_Open()
 On Error Resume Next
  Application.GoBack
 On Error GoTo 0
End Sub

うまく行かなかった場合は、以下を参考にして、Word 2007用の方法も可能です。

http://support.microsoft.com/kb/942482/ja
Word マクロ有効文書 (.docm) 形式の Word 文書を...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報