9

シナリオ

Word 文書が Excel 2011 ファイルに埋め込まれています。私はそれをpdfとして保存する必要があります。

Excel 2010 であれば、Win PC の MS-Office が OLE オートメーションをサポートしているため、問題にはならなかったでしょう。

私は何を試しましたか?

これは、動作する Excel 2010 で試したコードです。

Option Explicit

Sub Sample()
    Application.ScreenUpdating = False

    Dim shp As Shape
    Dim objWord As Object
    Dim objOLE As OLEObject

    Set shp = Sheets("Sheet1").Shapes("Object 1")

    shp.OLEFormat.Activate

    Set objOLE = shp.OLEFormat.Object

    Set objWord = objOLE.Object

    objWord.ExportAsFixedFormat OutputFileName:= _
            "C:\Users\Siddharth Rout\Desktop\Sid.pdf", ExportFormat:= _
            17, OpenAfterExport:=True, OptimizeFor:= _
            0, Range:=0, From:=1, To:=1, _
            Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=0, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False

    objWord.Application.Quit

    Set objWord = Nothing
    Set shp = Nothing
    Set objOLE = Nothing

    Application.ScreenUpdating = True
End Sub

明らかに、MACで同じものを使用することはできません。MACでこれを試しなかったわけではありません... 私はしました:-/ (基本的な人間の本性だと思いますか? )。予想通り失敗しました。:)

Excel 2011の場合、これを試しました。動作しますが、pdf を作成せず、エラー メッセージも表示しません。私はそれをデバッグしようとしましたが、喜びはありませんでした。

'~~> Reference set to MS Word Object Library
Option Explicit

Sub Sample()
    Dim oWord As Word.Application, oDoc As Word.Document

    Application.ScreenUpdating = False

    Sheets("Sheet1").Shapes.Range(Array("Object 1")).Select

    Selection.Verb Verb:=xlPrimary

    Set oWord = GetObject(, "word.application")

    For Each oDoc In oWord.Documents
        Debug.Print oDoc.FullName & ".pdf"

        oDoc.SaveAs Filename:=oDoc.FullName & ".pdf", FileFormat:=wdFormatPDF
        oDoc.Close savechanges:=False
    Next oDoc

    oWord.Quit

    Set oworddoc = Nothing

    Set oWord = Nothing
    Application.ScreenUpdating = True
End Sub

これは、AppleScript を使用して行うこともできると思います。そのため、Applescriptでもテストしました。ここでは、Word 文書を直接 PDF に変換しようとしています。この部分を取得したら、コードで少し回り道をすることができます:)

Sub tester()
    Dim scriptToRun As String

    scriptToRun = "set pdfSavePath to  " & Chr(34) & "Users:siddharth:Documents:Sid.pdf" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "set theDocFile to choose file with prompt " & Chr(34) & "Please select a Word document file:" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "tell application " & Chr(34) & "Microsoft Word" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "open theDocFile" & Chr(13)
    scriptToRun = scriptToRun & "set theActiveDoc to the active document" & Chr(13)
    scriptToRun = scriptToRun & "save as theActiveDoc file format format PDF file name pdfSavePath" & Chr(13)
    scriptToRun = scriptToRun & "end tell" & Chr(13)

    Debug.Print scriptToRun
    'Result = MacScript(scriptToRun)
    'MsgBox Result
End Sub

ただし、実行時エラーが発生するMacScript(scriptToRun)ため、Applescript が失敗していると確信しています。

スナップショット

ここに画像の説明を入力

Applescript エラー

ここに画像の説明を入力

質問

Excel 2011 に埋め込まれた単語ドキュメントを保存するにはどうすればよいですか? 私は VBA と Applescript を受け入れています。

4

1 に答える 1

7

まあ、私はのろわれます!

ご提案いただきありがとうございます。あなたが言及していたアプリケーションは、新しい MAC バージョンで廃止されたようです。そこで、MAC Store を検索したところ、SMILEという別のアプリケーションが見つかりました。

元のスクリプトを SMILE でテストしました。何も問題はなく、完璧に機能しました!!!

set pdfSavePath to "Users:siddharth:Documents:Sid.pdf"
set theDocFile to choose file with prompt "Please select a Word document file:"
tell application "Microsoft Word"
    open theDocFile
    set theActiveDoc to the active document
    save as theActiveDoc file format format PDF file name pdfSavePath
end tell

そこで、以前にテストしていたコードを試してみましたが、驚いたことに、今回は元のコードを変更しなくても機能しました!!! だから私は何が問題なのか困惑しています...SmileスクリプトをExcelで動作させる何かをインストールしましたか? 私は決して見つけられないと思います。

Option Explicit

Sub tester()
    Dim scriptToRun As String

    scriptToRun = "set pdfSavePath to  " & Chr(34) & "Users:siddharth:Documents:Sid.pdf" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "set theDocFile to choose file with prompt " & Chr(34) & "Please select a Word document file:" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "tell application " & Chr(34) & "Microsoft Word" & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & "open theDocFile" & Chr(13)
    scriptToRun = scriptToRun & "set theActiveDoc to the active document" & Chr(13)
    scriptToRun = scriptToRun & "save as theActiveDoc file format format PDF file name pdfSavePath" & Chr(13)
    scriptToRun = scriptToRun & "end tell" & Chr(13)

    Debug.Print scriptToRun
    Result = MacScript(scriptToRun)
    MsgBox Result
End Sub

スマイルスナップショット

ここに画像の説明を入力

編集:エラーが見つかりました

よく調べてみると、元のスクリプトに余分な行があることがわかりました。PDFパスを2回設定していました。スナップショットで確認できます。

于 2012-05-09T11:42:00.367 に答える