質問させていただきます.
どうぞよろしくお願いいたします.

 PowerPointの操作をするコードを作成して使っております.
毎回立ち上がるパワポのウィンドウを非表示にしたいのですが,
myAPP.Visible = True状態でないと,presentations.Openでエラーが出てしまいます.

Dim myAPP As Object
myAPP = CreateObject("PowerPoint.Application")
Dim myAPPpre = myAPP.presentations
Dim Mypath As String = TextBoxパス.Text
Dim FName As String

myAPP.Visible = True

FName = Dir(Mypath & "test.ppt", vbNormal)
With myAPPpre.Open(Mypath & FName) '←上のmyAPP.Visible = Trueを消すとエラー
                    '「Presentations.Open : 無効な要求です。PowerPoint のフレーム ウィンドウは存在しません。」となります.

 どうにか見えない状態で実行できないものでしょうか.
調べておりますと,同じ現象がよくあるようでした.
http://www.kotaete-net.net/Default.aspx?pgid=14& …
http://www.microsoft.com/japan/technet/scriptcen … のページ中間あたり「さいわい、Visible プロパティを True に設定することによって~」のところ.)

 もし何か方法が分かるかたがいらっしゃいましたら,
アドバイスいただければと思います.
 どうぞよろしくお願いいたします.

A 回答 (2件)

Openの引数WithWindowの既定値はmsoTrueですから,そうなるでしょう。


WithWindowにMsoTriState.msoFalseを渡してやればよいです。
    • good
    • 2
この回答へのお礼

 どうもありがとうございます!
 アドバイス通りやってうまくいきました.
はじめ,Importするとエラーだらけになったので,
With myAPPpres.Open(Mypath & FName, WithWindow:=Microsoft.Office.Core.MsoTriState.msoFalse)
でできました.
 ただActivePresentationエラーの修正と合わせて
3時間かかりました..orz

 本当にどうもありがとうございました!

お礼日時:2009/05/17 20:00

myAPP.Top = 600 など画面外にしておいて


あとで戻しておくのだと簡単ですが。
使う人が途中で終了させたときにも
元に戻すようにしておく必要があります。
 (VBを使っていないので・・・です。)
    • good
    • 0
この回答へのお礼

 どうもありがとうございます!!
 画面ぎりぎりまで行く設定でやってみましたが,
テクが至らず元に戻せない時がありました.
 家族で使用するPCなので,今回はYune-Kichi様の方法でいきます.
 アドバイスどうもありがとうございました.

お礼日時:2009/05/17 20:04

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

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

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

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

QVBAで既存のパワポのファイルを開くには?

アクセスやエクセルからVBAで既存のパワポのファイルを開くには?

参照設定をして、
Sub test()
Dim App As PowerPoint.Application
Dim MyFileName As String

Set App = CreateObject("PowerPoint.Application")

MyFileName = CurrentProject.Path & "サンプル.ppt"
App.Visible = True

Set App = Nothing
End Sub

を実行すると、パワポの空のアプリケーション開きますが肝心のファイルが開きません。

開く方法を教えてください。

Aベストアンサー

ExcelファイルやAccessファイルと
パワーポイントのファイルが同じフォルダにあるとして
Accessなら、CurrentProject.Path
Excelなら、ThisWorkbook.Path
でフォルダ名までが得られますので、それに \ を付け足して
CurrentProject.Path & "\" & "サンプル.ppt"

パワーポイントに参照設定を行っているのですから
CreateObjectせずに
Sub PPTopen()
Dim pp As New PowerPoint.Application
pp.Presentations.Open ThisWorkbook.path & "\" & "サンプル.ppt"
以下省略
で。
開くだけで、その後はVBAでパワーポイントを操作しないのであれば
Shell ("explorer.exe" & Chr(32) & ThisWorkbook.path & "\" & "サンプル.ppt"
↑読み取り専用で開かれました。当方 Office2010 の場合
↓PPTファイルをダブルクリックで開いた状態
CreateObject("shell.application").shellexecute ThisWorkbook.path & "\" & "サンプル.ppt"
とかでも。

ちなみにパワーポイントは数年来使ったことはありませんので
これ以上のことはご勘弁ください。

ExcelファイルやAccessファイルと
パワーポイントのファイルが同じフォルダにあるとして
Accessなら、CurrentProject.Path
Excelなら、ThisWorkbook.Path
でフォルダ名までが得られますので、それに \ を付け足して
CurrentProject.Path & "\" & "サンプル.ppt"

パワーポイントに参照設定を行っているのですから
CreateObjectせずに
Sub PPTopen()
Dim pp As New PowerPoint.Application
pp.Presentations.Open ThisWorkbook.path & "\" & "サンプル.ppt"
以下省略
で。
開くだけで、その後はVBAでパワーポイント...続きを読む

QVBAでアクティブなファイルを切り替える

PowerPointVBAの件です。

複数のファイルを開いていて、作業の流れでアクティブなファイルを切り替えたいと考えています。

ExcelVBAですと、

Workbooks(1).Activate

で、可能なので、

Presentations(1).Activate

で、よいのかと思ったのですが、

"コンパイル エラー:メソッドまたはデータ メンバが見つかりません。"と
表示されてしまいます。

パワーポイントでアクティブなファイルを切り替えるにはどのようにすれば良いのでしょうか?

Aベストアンサー

直接的な答えとしては
  Presentations(1).Windows(1).Activate
  Presentations(2).Windows(1).Activate
のようになります。
また、Excel同様
  Windows(1).Activate
  Windows(2).Activate
のようにも書けます。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルからマクロでパワーポイントを開きたい。

エクセルでUserFormに配置したボタンをクリックすると"AAA.pps"という名のパワーポイントスライドショーが始まる、としたい。
次の形でパワーポイントを開くところまでは参考書で見つけたが
その先の名前の指定方法がわかりません。ご教示乞う。
エクセル、パワーポイントともに2003。

Private Sub CommandButton1_Click()
Application.ActivateMicrosoftApp xlMicrosoftPowerPoint
End Sub

試行錯誤でマクロの記録で取得した次のコードでは頭の「Presentations」で「変数が定義されていません」と断られました。

sub aaaaa()
Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse
With ActivePresentation.SlideShowSettings
.ShowType = ppShowTypeKiosk
.LoopUntilStopped = msoTrue
.ShowWithNarration = msoTrue
.ShowWithAnimation = msoTrue
.RangeType = ppShowAll
.AdvanceMode = ppSlideShowUseSlideTimings
.PointerColor.SchemeColor = ppForeground
.Run
End With
End Sub

エクセルでUserFormに配置したボタンをクリックすると"AAA.pps"という名のパワーポイントスライドショーが始まる、としたい。
次の形でパワーポイントを開くところまでは参考書で見つけたが
その先の名前の指定方法がわかりません。ご教示乞う。
エクセル、パワーポイントともに2003。

Private Sub CommandButton1_Click()
Application.ActivateMicrosoftApp xlMicrosoftPowerPoint
End Sub

試行錯誤でマクロの記録で取得した次のコードでは頭の「Presentations」で「変数が定義されて...続きを読む

Aベストアンサー

こんにちは。

>具体的にどのように書けばいいのかわかりません。

私は、パワーポイントは持っていませんが、このようにすればよいと思っています。


sub aaaaaR()
Dim pptApp As Object
Set pptApp = CreateObject("PowerPoint.Application")

With pptApp
.Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse
  With .ActivePresentation.SlideShowSettings
    .ShowType = ppShowTypeKiosk
    .LoopUntilStopped = msoTrue
    .ShowWithNarration = msoTrue
    .ShowWithAnimation = msoTrue
    .RangeType = ppShowAll
    .AdvanceMode = ppSlideShowUseSlideTimings
    .PointerColor.SchemeColor = ppForeground
    .Run
  End With
End With
End Sub

こんにちは。

>具体的にどのように書けばいいのかわかりません。

私は、パワーポイントは持っていませんが、このようにすればよいと思っています。


sub aaaaaR()
Dim pptApp As Object
Set pptApp = CreateObject("PowerPoint.Application")

With pptApp
.Presentations.Open FileName:="C:\Documents and Settings\user\My Documents\AAA.pps", ReadOnly:=msoFalse
  With .ActivePresentation.SlideShowSettings
    .ShowType = ppShowTypeKiosk
    .LoopUntilStopped = msoTr...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

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

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QVBAでPowerPointからExcelにデータを抽出する

大量のPowerPointファイルに、それぞれオブジェクトがあり、そのオブジェクトの内容をVBAでExcelに書き出したいのですが、可能でしょうか?
具体的にはPowerPointにテキストボックスがあり、その文章をExcelのセルに書き出したいのです。
どのようにコーディングすればいいでしょうか?
できればExcelVBAでできれば、うれしいです。
OSはXPで、Office2003です。
よろしくお願いします。

Aベストアンサー

こんばんは。

> どのようにコーディングすればいいでしょうか?
ご自分でどこまでできてます?

> VBAでExcelに書き出したいのですが、可能でしょうか?
可能です。適当に書いたものですが下記のような感じとか。

注意点は、Shape のインデックス順の抽出になります。レイアウト通りの
順番で抽出できるとは限りません。レイアウト通りと思えば、非常に
面倒だと思います。(※この点の解決案は後述の参考 URL 参照)

なお、私なら多分外部ツールと組み合わせますよ。

[xdoc2txt] - PDF,WORD,EXCEL,一太郎などからテキストを抽出
http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html

この関連で Web 検索するとこんな記事がありました。

[パワーポイントからテキストを抽出]
http://www.ctrans.org/gobi/1156579633

ご参考までに。

' // フォルダ内の *.ppt ファイルからテキストを抽出する
Sub OutputText()

  Dim ppApp  As Object ' // PowerPoint.Application
  Dim ppPre  As Object ' // PowerPoint.Presentation
  Dim ppShp  As Object ' // PowerPoint.Shape
  Dim ppSld  As Object ' // PowerPoint.Slide
  Dim sPath  As String
  Dim sFnam  As String
  Dim i    As Long
  Dim sh   As Worksheet
  
  ' // 処理対象のフォルダパス
  sPath = "C:\"
  
  ' // 初回ファイル検索
  sFnam = Dir$(sPath & "\" & "*.ppt")
  If Len(sFnam) = 0 Then
    MsgBox "*.ppt が見つかりません", vbInformation
    Exit Sub
  End If
  
  On Error GoTo Err_
  
  ' // PowerPoint起動
  Set ppApp = CreateObject("PowerPoint.Application")
  ppApp.Visible = True
  ' // 出力シート作成
  Set sh = Workbooks.Add.Sheets(1)
  With sh.Range("A1:D1")
    .Font.Bold = True
    .Value = Array("Filename", "Slide Number", "Shape Name", "Text")
  End With
  
  ' // リスト開始行番号
  i = 2
  ' // *.ppt が見つからなくなるまでループ
  Application.ScreenUpdating = False
  While Len(sFnam) > 0
    ' // Presentation を開き、全ての Slide -その中の全ての Shape について
    ' // テキストがあればセルに出力する
    Set ppPre = ppApp.Presentations.Open(Filename:=sPath & "\" & sFnam, _
                       ReadOnly:=True)
    For Each ppSld In ppPre.Slides
      For Each ppShp In ppSld.Shapes
        If ppShp.HasTextFrame Then
          sh.Cells(i, "A").Value = sFnam
          sh.Cells(i, "B").Value = ppSld.SlideNumber
          sh.Cells(i, "C").Value = ppShp.Name
          sh.Cells(i, "D").Value = Replace$(ppShp.TextFrame.TextRange.Text, _
                           vbCr, vbLf)
          i = i + 1
        End If
      Next
    Next
    ' // Presentation を閉じ、次のファイルを検索
    ppPre.Close
    Set ppPre = Nothing
    sFnam = Dir$()
  Wend
  ppApp.Quit
  sh.Columns.AutoFit
  sh.Rows.AutoFit

Bye_:
  Set ppApp = Nothing
  Set sh = Nothing
  Exit Sub
Err_:
  MsgBox Err.Description, vbCritical
  Resume Bye_
End Sub

こんばんは。

> どのようにコーディングすればいいでしょうか?
ご自分でどこまでできてます?

> VBAでExcelに書き出したいのですが、可能でしょうか?
可能です。適当に書いたものですが下記のような感じとか。

注意点は、Shape のインデックス順の抽出になります。レイアウト通りの
順番で抽出できるとは限りません。レイアウト通りと思えば、非常に
面倒だと思います。(※この点の解決案は後述の参考 URL 参照)

なお、私なら多分外部ツールと組み合わせますよ。

[xdoc2txt] - PDF,WORD,EX...続きを読む

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

QエクセルVBAでパワーポイントを開き、表に文字を挿入jpeg保存時の実行時エラー

エクセルVBAでパワーポイントを開き、パワーポイント表に文字を挿入、名前の付けてjpeg保存にする段階で『実行時エラー424オブジェクトが必要です』でエラーになります。丸1日原因を探しましたがわかりません。大変こまっております。どなたかご教授くださいm(__)m
Sub Macro()

Dim objPPT As Object '参照設定すれば 
  PowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim Sld As Object 'PowerPoint.Slide
Dim Shp As Object 'PowerPoint.Shape
Dim myRow As Object 'PowerPoint.Row
Dim myCell As Object 'PowerPoint.Cell
Dim mySht As Worksheet
Dim n As Long
Dim j As Long
Dim fd As FileDialog 'ファイルダイアログ

'任意のファイル呼び出し
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = True
.Filters.Add "PowerPointファイル", "*.ppt; *.pps; *.pptx; *.pptm", 1
If .Show <> -1 Then Exit Sub
End With
Set mySht = ActiveSheet
'パワーポイント起動
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
i = mySht.Range("A" & Rows.Count).End(xlUp).Row + 1 '行カウンタ初期化

For n = 1 To fd.SelectedItems.Count '取得したファイルの情報のオブジェクトの数
'パワポファイル開く
Set myPre = objPPT.Presentations.Open(fd.SelectedItems.Item(n), True)
For Each Sld In myPre.Slides 'スライドループ

For Each Shp In Sld.Shapes '図形ループ

If Shp.HasTable Then '表発見

For Each myRow In Shp.Table.Rows '行ループ
For Each myCell In myRow.Cells 'セルループ
myCell.Shape.TextFrame.TextRange.Text = "おはよう"
Next
Next
End If
Next
Next
Next n
'ファイルの保存(ここで実行エラー)
ActivePresentation.SaveAs Filename:="C:\power.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
'パワポファイル閉じる
myPre.Close

objPPT.Quit 'パワーポイント終了
Set myCell = Nothing
Set myRow = Nothing
Set Shp = Nothing
Set Sld = Nothing
Set myPre = Nothing
Set objPPT = Nothing

MsgBox ("処理が終了しました")
End

インデントがうまく表示されないので、ホームページにアップロードしました。よろしくお願いいたします。
http://www.geocities.jp/tmp025tmp/test.html

エクセルVBAでパワーポイントを開き、パワーポイント表に文字を挿入、名前の付けてjpeg保存にする段階で『実行時エラー424オブジェクトが必要です』でエラーになります。丸1日原因を探しましたがわかりません。大変こまっております。どなたかご教授くださいm(__)m
Sub Macro()

Dim objPPT As Object '参照設定すれば 
  PowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim Sld As Object 'PowerPoint.Slide
Dim Shp As Object 'PowerPoin...続きを読む

Aベストアンサー

エラー番号だけを言われても・・・さっぱりわかりません。
ですの想像でしか答えられません・・・

私の環境では
「myPre.SaveAs」
で通りました。
ですので、コードが省略されていない限り、通ると思います。


>Excel VBA に対して、ActivePresentation.SaveAs が発行されているので、(中略)、そのやり方が無知でわかりません。
ExcelVBAでのアクティブはWorkBookです。
ですので、エクセル君に「今前面にあるプレゼンを保存して」と言っても伝わりません。
「パワーポイントの、今前面にある・・」と伝える必要があります。
その場合、objPPT変数を利用し「objPPT.ActivePresentation.SaveAs」となります。
いま、objPPT.ActivePresentationが「変数:myPre」に保持されているのであれば、「myPre.SaveAs」で通じます。
保持されてないのであれば、「objPPT.ActivePresentation.SaveAs」としてみてください。



~~~以下は上記で解決しない場合~~

とりあえず
[2147024809 EXCEL エラー]
でググってみました。同一のエラー番号で、様々なケースが出ています。
勝手に「Excelの予期せぬエラー番号かな?」と思いました。

その中に
http://support.microsoft.com/kb/409282/ja
というページを見つけました。


VB6時代「プロジェクトが壊れる」という現象がありました。
特定の端末ではエラーとなるという状況です。
(以下対策)
「第一の対策は、参照設定をしなおす。」
それがだめなら
「第二の対策として、プロジェクトを新規に作り、コードを移行する」
それがだめなら
「第三の対策として、本体をフォーマットして清める」

それと同じかも知れません。


今回の質問は、VB6ではなくVBAということで、
「プロジェクト」<-「WorkBook」
と読み替えてください。


新規のワークブックを作成し、そっちで実行しても一緒ですか?
この方法は、VB6の第二の対策です。

それがだめなら、Officeオブジェクトの操作でエラーが発生するということで、Office製品の再インストールをしてみるのもよいかもしれません。

それと「他の端末では動作するのではないか?」という疑念も持っています。
あと、ダイアログでのファイル選択などの不要な部分を抜いて、1ファイルだけでも結果が同じかどうかを知りたいです。

「対策を練って解消しないけど、他の端末では動く」という状況であれば、残念ながら本体のお清めの時期かも知れません・・・

エラー番号だけを言われても・・・さっぱりわかりません。
ですの想像でしか答えられません・・・

私の環境では
「myPre.SaveAs」
で通りました。
ですので、コードが省略されていない限り、通ると思います。


>Excel VBA に対して、ActivePresentation.SaveAs が発行されているので、(中略)、そのやり方が無知でわかりません。
ExcelVBAでのアクティブはWorkBookです。
ですので、エクセル君に「今前面にあるプレゼンを保存して」と言っても伝わりません。
「パワーポイントの、今前面にある・・」...続きを読む

QエクセルのVBAで開いているパワーポイントのファイルを印刷

エクセルのVBAで開いているパワーポイントのファイルを印刷することは可能でしょうか?
色々とHP等で調べましたが、わかりません
教えてください

Aベストアンサー

お、まだあきらめないんですね。
難しいでしょうが、がんばってください。

Sub pp_Print4()
Dim objPPT As Object '参照設定していればPowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim myName As String
Dim n As Long
myName = "E:\office\powerpoint\0.ppt" 'ファイル名
Set objPPT = CreateObject("PowerPoint.Application")
With objPPT
 .Visible = True
 On Error GoTo Err_Hnd
 'ファイル開いているとき
 Set myPre = .Presentations(myName)
 GoTo tugi
Err_Hnd:
 'ファイル開いていないとき
 Set myPre = .Presentations.Open(myName)
tugi:
 On Error GoTo 0
End With
With myPre
 '用紙に合わせる
 .PrintOptions.FitToPage = msoTrue
 .PrintOut '印刷
 DoEvents
 .Close 'ファイル閉じる
End With
'PowerPoint終了
objPPT.Quit
Set myPre = Nothing
Set objPPT = Nothing
End Sub

お、まだあきらめないんですね。
難しいでしょうが、がんばってください。

Sub pp_Print4()
Dim objPPT As Object '参照設定していればPowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim myName As String
Dim n As Long
myName = "E:\office\powerpoint\0.ppt" 'ファイル名
Set objPPT = CreateObject("PowerPoint.Application")
With objPPT
 .Visible = True
 On Error GoTo Err_Hnd
 'ファイル開いているとき
 Set myPre = .Presentations(myName)
 GoTo tugi
...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。


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

人気Q&Aランキング