大量のワードのファイルをテキスト保存する仕事が入り、フォルダ内にあるワードファイルをテキスト保存し、テキストボックスやオートシェープの中のテキストも抜き出すプログラムを「VBScript」で作りました。
テキスト保存する際、Unicode形式で保存しなければならず、調べると、「SaveAs …, 7」がUnicodeによるテキスト保存だと分かったのですが、実際にやってみると、拡張子が「.rtf」ファイルだけが、Unicodeによるテキスト保存され、「.doc」や「.docx」は、「シフトJIS」保存されてしまいました。
私、何か間違っているのでしょうか?
以下、一応、プログラムをコピーしておきます。
問題の部分は「行13」です。
なお、ワードは「Word2010」です。
01 Option Explicit
02 Public a, b, c, d, e, f, g, h, t, u, v, w, x, y, z
03 Set w = CreateObject("Word.Application")
04 w.Application.DisplayAlerts = False
05 w.Visible = False
06 Set x = CreateObject("Scripting.FileSystemObject")
07 Set y = x.GetFolder(".")
08 For Each a In y.Files
09 b = LCase(x.GetExtensionName(a.Name))
10 If b = "doc" or b = "docx" or b = "rtf" Then
11 h = x.GetBaseName(a.Name)
12 Set z = w.Documents.Open(y & "\" & a.Name)
13 z.SaveAs y & "\" & h & ".txt", 7
14 z.Close
15 Set z = Nothing
16 End If
17 If b = "docx" Then
18 Set z = w.Documents.Open(y & "\" & a.Name)
19 z.SaveAs y & "\qkza934irs2801wuptc56ynv7bm.doc", 0
20 z.Close
21 Set z = Nothing
22 Set z = w.Documents.Open(y & "\qkza934irs2801wuptc56ynv7bm.doc")
23 Call o
24 z.Close
25 Set z = Nothing
26 x.DeleteFile(y & "\qkza934irs2801wuptc56ynv7bm.doc")
27 ElseIf b = "doc" or b = "rtf" Then
28 Set z = w.Documents.Open(y & "\" & a.Name)
29 Call o
30 z.Close
31 Set z = Nothing
32 End If
33 If f > "" Then
34 Set t = x.CreateTextFile(y & "\TB_" & h & ".txt", True, True)
35 t.Write f
36 t.Close
37 End If
38 Next
39 w.Quit
40 Set z = Nothing
41 Set y = Nothing
42 Set x = Nothing
43 Set w = Nothing
44 MsgBox("Finished!")
45 Sub o
46 f = ""
47 For Each c In w.ActiveDocument.Shapes
48 If c.Type = 1 or c.Type = 17 then
49 Set v = c.TextFrame
50 e = v.TextRange
51 f = f & e
52 Set d = Nothing
53 ElseIf c.Type = 6 Then
54 For Each g In c.GroupItems
55 Set u = g.TextFrame
56 e = u.TextRange
57 f = f & e
58 Set u = Nothing
59 Next
60 End if
61 Next
62 End Sub
よろしく、お願いします。
No.1ベストアンサー
- 回答日時:
VBScriptについては門外漢なので、どこが問題なのか知りませんが。
WordのVB関連についての参考サイトだけ紹介しますね。
Document.SaveAs メソッド
http://msdn.microsoft.com/ja-jp/library/microsof …
MsoEncoding Enumeration
http://msdn.microsoft.com/ja-jp/library/microsof …
Document.SaveAs2 メソッド
http://msdn.microsoft.com/ja-jp/library/ff836084 …
Word VBA ファイル操作
テキスト・ファイルの文字コード変換
http://makoto-watanabe.main.jp/WordVba_file.html …
msoEncodingUTF7で指定できませんか?
この回答への補足
ありがとうございます!
教えて頂いたサイトを、今一度じっくり見ていると、そこから、「SaveAs」のパラメータの一覧があり、「Encode」のところで「1200」を指定すると、思っていた「UTF-16LE(BOM付き)」に書き出せました。
具体的には、「行13」を
「z.SaveAs y & "\" & h & ".txt", 7,,,,,,,,,,1200」
とすれば良かったのです。
しかし、マイクロソフトの説明などでは、「SaveAs FileName, 7」でUnicodeによるテキスト保存になっているのに…、分かりにくい!
なお、ついでに、「65001」がよく使う「UTF-8」だそうです。
すなわち、「1200」のところを「65001」にすると、「UTF-8」でテキスト保存されます。
ありがとうございました。
問題は解決しました。
ありがとうございます。
教えて頂いたサイトのいくつかは私も調べていく中で、発見していて、その中から、「7」という数字を見つけました。
そして、上記のとおり、「rtf」ファイルでは、実際に「7」だと、「Unicode」のテキストファイルになっているのです。
いろいろ調べて頂き、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】マクロの入ったファイル...
-
EXCEL/VBAでWORDファイル名の先...
-
ファイルのダウンロードダイア...
-
WebBrowserにHTMLテキストを読...
-
windows フォト アプリでmp4の...
-
VB6(SP5)にて、DVD-RまたはCD...
-
Tomcat+Struts1.3+Eclipseにて...
-
Emacsで保存ができない
-
HTMLファイルと、MHTファイルを...
-
サポートされたファイル形式お...
-
個別に違う添付ファイルを付け...
-
Googleマップに保存した地点が...
-
複数のブックを新しいブックのS...
-
ビデオファイルのプロパティの...
-
動画のURLの見方
-
Unknown Flash type
-
SDカードの中に入ってる小さい...
-
ガラケーからPCへの写真の取り込み
-
スマホでtxtファイルを編集する...
-
ファイル数と合計サイズの取得方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】マクロの入ったファイル...
-
eclipseの保管が押せない!
-
VBSでファイルを指定のフォルダ...
-
WebBrowserにHTMLテキストを読...
-
EXCEL/VBAでWORDファイル名の先...
-
HTMLファイルと、MHTファイルを...
-
リストボックスの保存方法を教...
-
エクセルでファイルを閉じるボ...
-
JavaScript でファイル保存を行...
-
Emacsで保存ができない
-
VB 2005 色データの保存、読出...
-
UWSCでエクセルファイルのみを...
-
オートシェイプを画像ファイル...
-
python文字化けエラーが発生し...
-
fireworksでjpeg保存可?初心者...
-
エクセルのxml形式の詳細について
-
文字「~」を使っているとJS...
-
エクセルのマクロで新規に作成...
-
HTMLでアンカーをはりPowerPoin...
-
Flashで作ったゲームの点数など...
おすすめ情報