質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

11550閲覧

VB.NETでExcelファイルをPDFファイルに変換する

kuta

総合スコア10

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2020/06/24 12:34

VB.NETでExcelファイルをPDFファイルに変換するコードを書きたく、
Webより下記コードを見つけテストを行っています。

実行PCが2台あり、1台では正常に動作したのですが、
もう1台では★を付けた部分で
「パラメーターが間違っています。(HRESULT からの例外0x80070057(E_INVALIDARG)」が表示されてしまいます。
Webで調査したところエラーコード自体が色んなものに使われているようで、行き詰っております。何かここの設定を確認した方が良いなど、解決の手口がありましたらお教え頂けないでしょうか。

PCのOSは2台ともWindows10 Enterpriseです。

■コード
Dim rtn As Boolean = False
Dim fn As String = "C:\Users\TestUser\Desktop\テスト.xls"
Dim xlApp As Object
Dim errmsg As String
xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False

Try Dim xlBooks As Object = xlApp.Workbooks Dim xlBook As Object = xlBooks.Open(fn) Dim xlSheets As Object = xlBook.Sheets Dim newFn As String = "C:\Users\TestUser\Desktop\テスト.pdf"

★ xlBook.ExportAsFixedFormat(Type:=0,
Filename:=newFn,
Quality:=0,
IncludeDocProperties:=True,
IgnorePrintAreas:=False,
OpenAfterPublish:=False)
xlBook.Save()

If Not xlSheets Is Nothing Then Try Finally System.Runtime.InteropServices.Marshal.ReleaseComObject End Try End If If Not xlBook Is Nothing Then Try xlBook.Close() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject End Try End If If Not xlBooks Is Nothing Then Try Finally System.Runtime.InteropServices.Marshal.ReleaseComObject End Try End If rtn = True Catch ex As Exception errmsg = ex.Message MsgBox(errmsg) 'Console.WriteLine("ERROR! ->" & errmsg) Finally If Not xlApp Is Nothing Then Try xlApp.Quit() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject End Try End If End Try

■試したこと
・2台PCのExcel参照設定を比較した→同じだった

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenshirou

2020/06/27 04:37 編集

今回の問題と関係ないかも知れませんが、そもそも、ReleaseComObjectの使い方は正しいのでしょうか?(ReleaseComObject(obj)のように、解放したいCOMオブジェクトを引数に渡す必要あり。) あと、PDF出力先の「C:\Users\TestUser」配下には、実行ユーザはアクセス権限があるのでしょうか?
kuta

2020/08/11 07:27

大変ご連絡が遅くなりまして申し訳ありません。 YT0014様 ご回答ありがとうございます。 存在確認も行っており、Excel再インストールでも解決しませんでした。。。 頂いたサイトを拝見したのですが、ほぼ同じ内容に思えました、が、ここでも解決されていないようですね・・・ kenshirou 様 別PCで正常に動作するため、引数の使用方法は問題無いかと思っています。 また、実行ユーザにアクセス権は付与されております。
YT0014

2020/08/11 07:42 編集

誤操作による投稿の為削除
guest

回答2

0

自己解決

ご報告が遅れて申し訳ありません。
皆様ありがとうございます。
色々試したのですが上手くいかず、自分なりの解決方法として
Adobe PDFというプリンタから印刷するという方法でPDF化を実装しました。
明確な解決方法を見つけられずもやもやさせてしまい申し訳ありません。。。
取り急ぎはこちらでクローズとさせて頂きます。


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

Dim xlBooks As Object = xlApp.Workbooks
Dim xlBook As Object = xlBooks.Open(InputFilePath)
Dim xlSheets As Object = xlBook.Sheets

xlSheets.PrintOut(Copies:=1, ActivePrinter:="Microsoft Print to PDF", Collate:=True,PrToFileName:=OutputFilePath)

xlBook.Close()
xlBooks.Close()

投稿2020/08/11 07:29

kuta

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PDFに変換するのは、Worksheetオブジェクトです。
そして、ExportAsFixedFormatメソッドにてpdfに変換します。

複数のワークシートを一つのpdfに変換する場合、先に複数のワークシートをアクティブにする必要があります。

VB

1 Dim xlBooks As Object = xlApp.Workbooks 2 Dim xlBook As Object = xlBooks.Open(fn) 3 Dim xlSheets As Object = xlBook.Sheets 4 Dim newFn As String = "C:\Users\TestUser\Desktop\テスト.pdf" 5 6 xlSheets.Select 7 ActiveSheet.ExportAsFixedFormat Type:=0, _ 8 Filename:=newFn

投稿2020/07/05 03:30

kai_keitai

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuta

2020/08/11 07:27

ご回答ありがとうございます。 頂いた内容で先にアクティブにするよう実装してみたのですが、結果変わらずでした・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問