ファイルの閉じるコマンドについて教えてください。

現在自動でPDFファイルを作成し、そのファイルを、メールソフトに添付して送信する
プログラムをVBで作成しています。

一連の流れは出来たのですが、メールの送り先で添付されたPDFファイルを開くと
"この文書を開く時にエラーが発生しました。ファイルを修復できません"

というエラーメッセージがでて、ファイルを見ることが出来ません。

メールに添付しないでPDFファイルを作成する処理だけを実行させ、ファイルを開くと
ちゃんと開きます。

また、あらかじめ作成されたPDFファイルをメールソフトに添付し、送り先でファイルを
開いてもエラーは表示はありません。

すなわち、この2つの処理をつなげると不具合が生じるのです。

例えば、プログラム実行直後に、作成されたファイルを開こうとすると
共有違反となってしまいます。

メールにPDFファイルを取り込む時にそのような理由で不具合が生じるので
はないかと思っています。

したがって、作成したファイルを閉じる(あるいは名前をつけて保存)コマンド
を教えてもらえないでしょうか?宜しくお願いします。

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

A 回答 (2件)

PDFファイルが完全に出来上がる前にメール添付を


始めているとか
印刷ジョブが終了するまで待ってみては?
    • good
    • 0

自動でメールソフトに添付というのは、どうやっているのですか?


その部分に問題があるのかもしれませんよ。
    • good
    • 0

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

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

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

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

Qプロバイダー変更で初期設定アカウントで送信できな

プロバイダーをOCNからBIGLOBEに変えて、設定もしてもらいました
で、メールを送信してみると出来ません
調べてみると「送信」の隣の「アカウント」がOCNとBIGLOBEの2つあり、OCNの方にチェックされています
BIGLOBEにチェックを入れると送信できるのですが
初期設定がOCNになってままなので、送信する度にアカウントをチェックし直さなけえばいけません
この場合、どこでどう設定し直せばよいのでしょうか?
OCNのアカウントは削除してしまって良いのでしょうか?

Aベストアンサー

キャリアメール(プロバイダメール)を使っている場合、プロバイダを変更すると、メールアドレスを変更をするか、しないかを、「最初に」考える必要が有ります。
48946 さんは、メールアドレスが変更を、考えずに、プロバイダの変更をしたのですか?。


> 調べてみると「送信」の隣の「アカウント」がOCNとBIGLOBEの2つあり、OCNの方にチェックされています

引き続き、キャリアメール(プロバイダメール)を使いたいのですね。
プロバイダをOCNからBIGLOBEへ変更して、メールソフト名が不明のメーラー(メールソフト)のアカウントでOCNにチェックがある為、OCNのアカウントが優先で送信します。
しかし、プロバイダのBIGLOBEOCNでは、OCNメールアドレスの設定が無いから、「OCNの設定」で送信することが出来ないのです。


> BIGLOBEにチェックを入れると送信できるのですが、初期設定がOCNになってままなので、送信する度にアカウントをチェックし直さなけえばいけません

OCNのメールアドレスを使いたいのなら、「OCNのプロバイダ契約」も残すことが必要だったのです。
つまり、OCNからBIGLOBEの二重契約が必要です。

OCNの契約が残っていれば、メーラー(メールソフト)が質問文有りませんので分かりませんが、OE(アウトルックエクスプレス)とか、Windowsメールとかなら、OCNのアカウントの方へ「既定」を設定です。

OCNの契約が無ければ、メーラー(メールソフト)のアカウントのOCNの「既定」を外して、BIGLOBEの方へ「既定」を設定するしかありません。

どうしても、OCNのメールアドレスを使いたいならば、プロバイダのOCNの契約をするしかありません。


> OCNのアカウントは削除してしまって良いのでしょうか?

私のすぐ上の回答の様に、48946さんが、キャリアメールのOCNのメールアドレスが、必要か不要かをお考えになって、不要と思いならば、削除してもいいでしょう。

-------------------------

キャリアメール(プロバイダメール)のほかに、フリーメール(無料メール/Webメール)と言うものがあります。
フリーメールは、インタネットが接続できるなら、パソコンを変えても違っても、他人のパソコンでも、世界中の何処でもメールの送受信が可能です。

ただし、欠点は、ID/PWがパソコンに残るのでセキュリティに注意することが必要です。(他人のパソコンなら、履歴を残さずに削除すること)
また、捨てメールアドレス(捨てメアド)として、複数を同時に取得したり、一時的に取得後すぐ解除したり、使い捨てしたり等、通販・いたずら等の偽の申込等のセキュリティ対策で取得する人も居ます。だから、セキュリティレベルが高いサイト等では、フリーメールの登録を拒否する所もあります。

フリーメール(古いサイトなので、中には現在と違うことがあります)
http://rich-navi.com/freemail-3.html
http://enchanting.cside.com/hp/freemail.html
http://www.kooss.com/freemail/

キャリアメール(プロバイダメール)を使っている場合、プロバイダを変更すると、メールアドレスを変更をするか、しないかを、「最初に」考える必要が有ります。
48946 さんは、メールアドレスが変更を、考えずに、プロバイダの変更をしたのですか?。


> 調べてみると「送信」の隣の「アカウント」がOCNとBIGLOBEの2つあり、OCNの方にチェックされています

引き続き、キャリアメール(プロバイダメール)を使いたいのですね。
プロバイダをOCNからBIGLOBEへ変更して、メールソフト名...続きを読む

Qファイルサイズを指定してファイルを作成したいのですが…(fsutilコマンド?)

はじめまして。
VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。

現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、
(1)Windows XP以上のOSにしかfsutilコマンドが対応していない。
⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。)
(2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。
⇒Dドライブには作成できるため、フォルダパスの権限の問題だと思うのですが、回避する方法が思いうかびません。
(デスクトップ上のフォルダは現行ログインユーザのDocument and Settings上のデスクトップなので、フォルダの権限を見ると書き込み可能になっているのですが、fsutilが独自の権限で動作しているもしくは、個人フォルダは他から参照できない設定にしていることが原因でしょうか?)

ご回答いただけると助かります。
よろしくお願いいたします。

はじめまして。
VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。

現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、
(1)Windows XP以上のOSにしかfsutilコマンドが対応していない。
⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。)
(2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。
⇒Dドライ...続きを読む

Aベストアンサー

FileStreamとBinaryWriterでってことではダメでしょうか?

Dim fs as new FileStream( "ファイルパス", IO.FileMode.CreateNew Or IO.FileMode.Truncate)
Dim bw As New IO.BinaryWriter(fs)
Dim arByte() As Byte
' 10,000個の要素準備
ReDim arByte(9999)
bw.Write(arByte)
bw.Close()
fs.Close()
といった具合です

上書きされるのを防止するなら
先頭で
dim fsinfo = new IO.FileInfo("ファイルパス")
if fsinfo.Exists = false then Return
などの処理を追加しましょう

Qメールフォーム:「必須項目」も「送信完了」画面もどちらも設定したい

JavaScript初心者です。よろしくお願い致します。
JavaScriptを使用してメールフォームを作成しています。

「送信」ボタンを押した後、必須項目確認はJavaScriptで作成できました。
「送信」ボタンを押した後、「送信完了」画面(別ページに飛ぶ設定)もJavaScriptで作成できました。
しかし【どちらの動作も一緒に設定】しようとすると上手く動いてくれません。

FORMのonSubmit設定+「送信」ボタン自体に「送信完了」のアラート表示する方法も試してみたのですが「送信完了」アラートが先にでてしまったり…。

「送信完了」の方法は別ページリンクでもアラートでもかまいません。
必須項目+最後に「送信」を押して、送信された後の何かリアクションを入れる方法を探しています。

教えて!Gooも初心者で何か失礼がありましたら申し訳ありません!どうかよろしくお願い致します。

Aベストアンサー

#2です。

メーラーを起動するタイプなんですね。
ちょっと勘違いしてました。
「送信完了」画面がCGIで、そのCGIによってメール送信していると思ったので。

フォームタグを
<form action="mailto:●@メールアドレス●" method="post" Accept-charset="shift_gis" Enctype="text/plain" name="myform">

サブミットボタンを
<input type="button" name="button" value="送信" onClick="Check();" />

入力項目確認ファンクションを
function Check(){
if(document.myform.name.value==""){
alert("名前を入力してください。");
return false;
}
if(document.myform.email.value==""){
alert("メールアドレスを入力してください。");
return false;
}
document.myform.submit();
location.href="送信完了画面アドレス";
}

に変えてお試しあれ。

#2です。

メーラーを起動するタイプなんですね。
ちょっと勘違いしてました。
「送信完了」画面がCGIで、そのCGIによってメール送信していると思ったので。

フォームタグを
<form action="mailto:●@メールアドレス●" method="post" Accept-charset="shift_gis" Enctype="text/plain" name="myform">

サブミットボタンを
<input type="button" name="button" value="送信" onClick="Check();" />

入力項目確認ファンクションを
function Check(){
if(document.myform.name.value==""){
alert("...続きを読む

QPDFファイルを開かずに印刷したい

幾つものPDFファイルを印刷したいのですが、
できればAdobeReaderを起動させずに印刷したいです。

ファイルのアイコン上で右クリック→印刷でも可能ですが、
数が多くなると、この作業も大変です。
そこでVisualBasic2008ExpressEditionを使って、
簡単なシステムを作りたいと考えています。

しかし、PDFを開かずに印刷する方法が、どうしてもわかりません。
ネット検索、教えてgoo内の検索でもヒットせず途方に暮れています。
参考になるホームページや書籍がありましたら教えてください。
「こんな手法があるよ」というものでも構いません。

宜しくお願いします。

Aベストアンサー

PDFを開く際にACRORD32.exeに対して以下のコマンドラインを指定してください。

ACRORD32.EXE /s /l /p /h [PDFのパス]

コマンドラインの解説は参照URLを。

参考URL:http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html

QThunderbird 「後で送信」の設定方法

Thunderbird Ver3.1.16 を使用しようとしてます。
従来は、OutlookExpress を使用していました。

送信トレイに、一時保存しておき、送信ボタンで、一括で送信したいのです。
すみませんが、
設定やアドインがあるのでしたら、御存知方、教えてください。
メール作成画面で、「後で送信(する)」指定があるのは分かりましたが、
その設定を、デフォルトにする方法が分かりません。
よろしくお願いします。

Aベストアンサー

メール作成画面で案が完成したら、メニューの「ファイル」>「後で送信」を選択すると「ローカルフォルダ」の共通送信トレイに置かれます。
複数の送信メールが置かれた「送信トレイ」の右クリック>「未送信メッセージを送信」から一括送信できます。

また、デフォルトの上の方法で対応できますが、送信予約が可能なSend Later3がありますから、必要でしたら試してみてください。
http://www.thunderbird-mail.net/addon/automail.html
https://addons.mozilla.org/ja/thunderbird/addon/send-later-3/

なお、余計なことですが、3.1バージョンは、3.1.17が最新ではないかと思いますので、ヘルプメニューからの更新をどうぞ。

QPDFファイルを開き、印刷し、閉じるマクロ

Excel 2003 VBAにて、
PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。

Dim AA, AAA

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf"
AAA = Shell(AA, vbNormalFocus)

にて、PDFファイルを開くことは出来ました。
このPDFファイルを、「印刷し、閉じる」ためには、
このPDFファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387.aspx

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional prin...続きを読む

Q送信元アドレスを自由に設定できるメール送信専用ソフト。

送信元アドレスを自由に設定できるメール送信専用ソフトを探しています。パソで送信元のアドレスも携帯のメアドに偽装できるやつです。よろしくお願いしますm(_ _)m

Aベストアンサー

念のため、やり方も置いていきますね。

あくまで送信元の偽装なので、そのアドレスにメールを送っても届きません。

ツール→アカウント→メール→追加→メール

表示名:相手に表示させたい自分の名前
電子メールアドレス:相手に表示させたいアドレス
受信メールサーバー:なんでもよし(私はわかりやすくnothingとかにしてます)
送信メールサーバー:あなたがPCで使っているメールアドレスの送信サーバー
アカウント:なんでもよし(適当に@の前とかでいいです)
パスワード:なんでもよし(保存するのチェックを外せば空欄でいい)
で、完了。

その後、ツール→アカウント→メール→該当アカウント(受信サーバーが表示されてます)をダブルクリック
全般→一番上のボックスに受信サーバーが表示されていますが、これをわかりやすい物に変えましょう
一番下の受信時および同期時にこのアカウントを含むのチェックを外しましょう。
OKで完成。

メールを送るときに送信者をこのアカウントに変更して送れば、偽装アドレスで送信できます。

QPDFファイルの作成

カタログを作成するのにPDFで納品することになりました。1000ページを軽く超えてしまいます。印刷屋の都合で16ページごとにファイルを区切ってほしいといわれました。今PrimoPDFというフリーソフトを用いています。プリンタ出力のプログラムにしています。極力プログラムの変更なしで、カタログ1-16.pdfのようにファイル名をプログラムから指定できるようなソフトはないでしょうか。ほかにも何かよい方法があればお願いします。当初PostScriptだったんですが、さすがに手に負えないのでPDFにしていただきました。

Aベストアンサー

PrimoPDFは使ったことがないのでわからないのですが、Acrobatのように、「出力先の確認をしない」という項目がえらべるようになっていれば、ドキュメント名を「カタログ1-16」のようにしておいて、ページ区切りごとにendDocすれば良さそうにおもえますね。

お役にたてず、すみません。

Q複数のアカウントでどちらからでも送信可能な設定にするには?

メールのアカウントを2つ併用してます。
受信時は設定でどちらから接続しても双方とも受信できるのですが、
送信の際もどちらから接続しても送信出来るようにしたいのですが
設定が分かりません。どなたか教えて頂けませんか?

Aベストアンサー

はずしていたらすいません。
私も複数のプロバイダで4つのアカウントを
家族で使用しています
私の場合は、CATVのプロバイダで常時接続しており
フリーのメールソフトを使用していて特に接続先を切り
かえることはありませんが、それぞれを問題なく送受信
していますよ。
お使いのメーラーが分からないのでなんとも言えませんが
以前私がOEを使っていたとき、受信はどちらでもでき
ましたが送信についてはアカウントをいちいち設定して
面倒でした。 (ただ私が知らないだけで他の設定方法
があるかもしれませんが)
1度他のメール・ソフトを検討されてみてはいかがですか?
私は Edmax と言うフリーソフトを使っていますが
フリーとは思えないくらいの優れものです。
以下のURLからダウンロードできますので試してみて下さい。

参考URL:http://www.edcom.jp/

QVBとAdobe Acrobat SDKを使用してPDFファイルを作成したい

VBとAdobe Acrobat SDKを使用してPDFファイルを作成
したいと考えています.
SDKとVBの連携についての情報が見つからないため,
試行錯誤でプログラム作業をおこなっています.
VBとAdobe Acrobat SDKを使用したサンプルが掲載されているサイトまたは書籍はないのでしょうか?

OS:Windows2000+SP4
Visual Basic 6.0+SP6
Adobe Acrobat 5 +SDK

Aベストアンサー

サンプルはgoogleで探せばよいでしょう。
planetpdfが情報多いです。

参考URL:http://www.google.co.jp/search?q=CreateObject+AcroExch.APP


人気Q&Aランキング