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

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

新規登録して質問してみよう
ただいま回答率
85.48%
LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

OpenOffice Basic

OpenOffice Basicとは、Apache OpenOfficeの作業を自動化するプログラミング言語。Apache OpenOfficeは、オープンソースで開発されているオフィススイートの名称もしくはその制作プロジェクトの総称です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

3510閲覧

【VBS】【LibreOffice】【OpenOffice 解決済み】ファイルの保存ができない

Reach

総合スコア733

LibreOffice Calc

LibreOffice Calcは、様々なOSで利用可能なオフィススイートであるLibreOfficeに含まれるオープンソースの表計算ソフトです。テンプレートや背景色、枠線といった書式設定の各項目を柔軟で設定することができます。

OpenOffice Basic

OpenOffice Basicとは、Apache OpenOfficeの作業を自動化するプログラミング言語。Apache OpenOfficeは、オープンソースで開発されているオフィススイートの名称もしくはその制作プロジェクトの総称です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2019/08/24 02:52

編集2019/08/25 06:51

お世話になっております

表題の通りです
保存ができず 困っております

[automation bridge] : com.sun.star.task.ErrorCodeIOException: SfxBaseModel::storeSelf: 0x31c
上記 エラーメッセージが出ます

分かる方 ご教示 宜しく お願い致します

VBScript

1 2 3Dim objWshShell 4Set objWshShell = WScript.CreateObject("WScript.Shell") 5 6 7 8set oFSObj = CreateObject("Scripting.FileSystemObject") 9oFile = "test.xls" 10oAbsFile = oFSObj.GetAbsolutePathName(oFile) 11 12 13fpassname = oAbsFile 14 15drv = left(fpassname,1) 16fpassname = "file:///" & drv & "|/" & mid(fpassname,4) 17 18 19Set OSM = WScript.CreateObject("com.sun.star.ServiceManager") 20Set oDesktop = OSM.createInstance("com.sun.star.frame.Desktop") 21 22Dim Result() 'As Object 23dummyArray = Result 24 25 26Set oCalcDoc = oDesktop.loadComponentFromURL(fpassname , "_blank", 0 ,dummyArray) 27 28 29Set oSheet = oCalcDoc.Sheets.getByName("Sheet1") 30 31 32call oCalcDoc.store() 33

LibreOfficeでは エラーが出ますが OpenOffice では 下記コードで 動作するみたいです

vbs

1call SaveFile(oFile) 2 3Function urlEncode(str) 4 Dim oSjisStream, oUTFStream 5 Dim strSjis, strUTF, strEnc 6 Dim result() 7 Dim space 8 space = "%20" 9 urlEncode = "" 10 If str = "" Then Exit Function 11' 12 set oUTFStream = CreateObject("ADODB.Stream") 13 oUTFStream.Mode = 3 14 oUTFStream.Type = 2 'text data 15 oUTFStream.CharSet = "UTF-8" 16 oUTFStream.Open 17 oUTFStream.WriteText str 18' 19 oUTFStream.Position = 0 'rewaind 20 oUTFStream.Type = 1 'binary data 21 oUTFStream.Position = 3 22 strUTF = oUTFStream.Read 23 ReDim result(UBound(strUTF)+1) 'into byte array 24 For i=1 To UBound(strUTF)+1 25 26 b = AscB(MidB(strUTF, i, 1)) 27 28 if (b >= 97 and b<= 122) or (b >= 65 and b<= 90) or (b >= 48 and b<= 57) or (b >= 45 and b<= 46) or (b = 95) or (b = 126) then 29 result(i) = Chr(b) 30 ElseIf b = 32 then 31 result(i) = space 32 ElseIf (b >= 0 and b<= 15) then 33 result(i) = "%0" & Hex(b) 34 Else 35 result(i) = "%" & Hex(b) 36 end if 37 Next 38 39 urlEncode = Join(result, "") 40 41 42 set oSjisStream = Nothing 43 set oUTFStream = Nothing 44End Function 45 46SUB SaveFile(oFile) 47 48 49 50 Dim saveparam0,saveparam1,saveparam2 51 Dim storeProps(2) 52 53 passname = "file:///" + urlEncode(oFile) 54 55 passname = Replace(passname,"\","/") 56 passname = Replace(passname,"%5C","/") 57 passname = Replace(passname,"%3A",":") 58 passname = Replace(passname,"%2E",".") 59 60 61 Set saveparam0 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 62 saveparam0.Name = "URL" 63 saveparam0.Value = passname 64 Set storeProps(0) = saveparam0 65 66 Set saveparam1 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 67 saveparam1.Name = "FilterName" 68 saveparam1.Value = "MS Excel 97" 69 Set storeProps(1) = saveparam1 70 71 Set saveparam2 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 72 saveparam2.Name = "Overwrite" 73 saveparam2.Value = True 74 Set storeProps(2) = saveparam2 75 76 dim Frame , DispatchHelper 77 Set Frame = oCalcDoc.getCurrentController().getFrame() 78 79 Set DispatchHelper = OSM.createInstance("com.sun.star.frame.DispatchHelper") 80 call DispatchHelper.executeDispatch(Frame, ".uno:SaveAs", "", 0, storeProps) 81 82 83end sub

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

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

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

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

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

guest

回答1

0

自己解決

ファイルを開くダイアログで Open したところ 解決いたしました

vbs

1Set OSM = WScript.CreateObject("com.sun.star.ServiceManager") 2Set oDesktop = OSM.createInstance("com.sun.star.frame.Desktop") 3 4fpassname = OpenFile2() 5 6Call SaveFile3(fpassname) 7 8Function OpenFile2() 9 10Dim oFilePicker 11 12Dim nDlgResult 13 14Dim sFiles() 15 16Dim sFilename 17 18OpenFile2 = "" 19 20set oFilePicker = OSM.createInstance("com.sun.star.ui.dialogs.FilePicker") 21Dim filename 22 23Dim args(0) 24 args(0) = "com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE" 25 With oFilePicker 26 .initialize(args) 27 .setTitle "ファイルを開く" 28 .AppendFilter "Excelのファイル (*.xls;*.xlsx)", "*.xls;*.xlsx" 29 .SetCurrentFilter "Excelのファイル (*.xls;*.xlsx)" 30 31 32 End With 33 34 35nDlgResult = oFilePicker.execute() 36 37 38IF nDlgResult <> 1 Then 39 Exit Function 40END IF 41 42sFilename = oFilePicker.getFiles()(0) 43 44OpenFile2 = sFilename 45 46End Function 47 48Sub SaveFile3(passname) 49 50 51 52 dim aprps(2) , saveparam0,saveparam1,saveparam2 53 54 55 passname = Replace(passname,"\","/") 56 passname = Replace(passname,"%5C","/") 57 passname = Replace(passname,"%3A",":") 58 passname = Replace(passname,"%2E",".") 59 60 61 62 Dim storeProps(2) 63 64 Set saveparam0 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 65 saveparam0.Name = "URL" 66 saveparam0.Value = passname 67 Set storeProps(0) = saveparam0 68 69 Set saveparam1 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 70 saveparam1.Name = "FilterName" 71 saveparam1.Value = "MS Excel 97" 72 Set storeProps(1) = saveparam1 73 74 Set saveparam2 = OSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 75 saveparam2.Name = "Overwrite" 76 saveparam2.Value = True 77 Set storeProps(2) = saveparam2 78 79 dim Frame , DispatchHelper 80 Set Frame = oCalcDoc.getCurrentController().getFrame() 81 82 Set DispatchHelper = OSM.createInstance("com.sun.star.frame.DispatchHelper") 83 call DispatchHelper.executeDispatch(Frame, ".uno:SaveAs", "", 0, storeProps) 84 85 86End Sub

投稿2019/08/25 15:10

Reach

総合スコア733

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問