アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のマクロは、.xlsxのブックの全シートを.csvとしてファイル出力するものです。

これを使用すると、値の一つ一つがダブルコーテーション(")で囲われてしまうのですが、ダブルコーテーションがつかないようにしたいです。

どのようにしたらよいか、分かる方はいらっしゃいますでしょうか。なお、LibreOfficeを使用しているため、Excelのマクロと違う点があるかもしれません。

--

REM ***** BASIC *****

Sub Sheets_To_CSV
sheets=ThisComponent.Sheets.createEnumeration()
sURL = ThisComponent.getURL()
oView = ThisComponent.getCurrentController()
while sheets.hasMoreElements()
sh=sheets.nextElement()
s=sh.getName()
if sh.IsVisible then
oView.setActiveSheet(sh)
scURL = CONVERTFROMURL(sURL)
stURL = Dir(sURL , 16)
StoreCSV LEFT(sURL , instr(scURL,stURL) + 6) & s &".csv"
endif
wend
End Sub


sub StoreCSV(sURL As String)
dim document as object

document = ThisComponent

dim args(1) as new com.sun.star.beans.PropertyValue

args(0).Name = "FilterName"
args(0).Value = "Text - txt - csv (StarCalc)"
args(1).Name = "FilterOptions"
args(1).Value = "44,34,76,1"

document.storeToURL(sURL,args)
end sub

質問者からの補足コメント

  • コメントありがとうございます。

    CSVの本来のフォーマットは存じ上げないのですが、最初からCSVとして作成したファイルにはダブルコーテーションがつかないのに、xlsxで作成したものには変換後もついてきてしまうので、困っております。(なお、intやfloatのような数値のみのセルにはつかず、文字列にのみ付加されているようです)

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/09/06 15:58
  • >値の中にダブルクォーテーション、カンマなどが入る可能性はゼロなの?
    CSVなのでカンマは入りますね。
    ダブルクォーテーションは、自動で付加する部分の処理がなくせれば、と考えていました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/09/07 08:01
  • どうもありがとうございます。

    >『一体何のソフトで確認されているのか?』
    MacのDiffMergeという差分確認のソフトで確認しています。

    テキストエディタを挟むと確かに消せますね。ただ、頻繁に行う作業なので、工程をなるべく減らせれば、と考えていました。

    ダブルコーテーションが入るとプログラムでの読み取りに問題が出るため、このような質問をしましたが、マクロではなくプログラム側での除去を考えたほうが良いような気がしてきました。

    No.4の回答に寄せられた補足コメントです。 補足日時:2019/09/07 08:08

A 回答 (6件)

>ダブルコーテーションが入るとプログラムでの読み取りに問題が出るため、このような質問をしましたが、


>マクロではなくプログラム側での除去を考えたほうが良いような気がしてきました。

そのプログラムは何の言語で作成されているかはわかりませんが、あなたが自由に改造できるものなのでしょうか?
もし、そうであれば、そのほうがよいかと。
    • good
    • 1

カンマ、改行、ダブルコ-テ-ションを含む文字列をセルで扱えなくなるから


わざわざ囲っているのです。

まともなCSVを読めないプログラムはさっさと捨てるか改良
しましょう。
    • good
    • 0

ちょっと不思議に感じたのですが。


最初からのCSVにはついてない・今回のコードで作成されたものにはついている、と言う点から『一体何のソフトで確認されているのか?』ですね。
おおよそ予測できるのはテキストエディタで開いているとしか考えられませんでした。

ならばいっそ現在のコードでCSV変換した後にテキストエディタにGrep機能があるなら、それを用いて一括置換してしまうとか?
例として『サクラエディタ』での話ですが、
https://webzarashi.hatenablog.com/entry/sakura-g …

置換前:"
置換後:(何も入力しない)
ファイル:*.csv
フォルダ:(ファイルの保存先)

とかで。
存在させる意味は色々出てますが、実際に使用されている側が不要と言うのなら構わないのかな~と思いまして。
この回答への補足あり
    • good
    • 0

値の中にダブルクォーテーション、カンマなどが入る可能性はゼロなの?


可能性がゼロじゃなければ囲っておかないと下流で CSV 取り込むシステムが困るよ。

LibreOffice のプログラムはわからないのできちんと回答できませんが、テキストファイルとして1セルずつガリガリ出力していったら自由に何でもできそうですね。
この回答への補足あり
    • good
    • 0

Excelでも、データベースでも、データのセルごとの内容をくくってるんだから、


括ってないと取り込んだ時に困るんじゃないの?
    • good
    • 0

ん?csvで吐き出すなら、ついてた方が、後々、良くない?


逆についてなかったら、使えなくない?
この回答への補足あり
    • good
    • 0

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

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


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