- ベストアンサー
テキストファイルが文字化けする
エクセルのシートからテキストファイルに VBAで出力しようとしたのですが、 出力したテキストファイルは文字化けしてしまいます。 Dim ws As Worksheet For Each ws In Worksheets ws.SaveAs ws.Name + ".txt" Next ws としたのですがどこがいけないのでしょうか? アクティブにしているエクセルのファイルのシートは、 1つだけとしています。 *Excel2002を使用しています。 お願い致します。
- gorohamusu
- お礼率37% (3/8)
- Microsoft ASP
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
再びこんにちは。 > Excel2002だと出来ないので それは失礼しました、こちらはExcel97です。^^;; メソッドが変わったのでしょうかね。 Sub Test() Dim ws As Worksheet, wb As Workbook For Each ws In ThisWorkbook.Worksheets ws.Copy Set wb = ActiveWorkbook wb.SaveAs wb.Worksheets(1).Name + ".txt", xlText Next ws End Sub これでダメなら、ゴメンナサイです。
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 文字化けではなく、通常のExcelフォーマットになってます。拡張子を.xlsにすればExcelで普通に開けるハズです。 ブック内のシート数が1つならループする必要な無いと思いますが。。。 ws.SaveAs ws.Name + ".txt", FileFormat:=xlText
補足
ご早い回答ありがとうございます。 早速 ws.SaveAs ws.Name + ".txt", FileFormat:=xlText と試してみたのですが `SaveAs`メソッドは失敗しました。`Worksheet`オブジェクト とエラーが出ます。 Excel2000では ws.SaveAs ws.Name + ".txt", xlText これで出来たのですが、Excel2002だと出来ないので ご教授いただきたいです。 お願いいたします。
関連するQ&A
- Excelの複数シートからcsvファイルを出力
Dim objXL Dim f Dim m Dim ws Set objXL=CreateObject("Excel.Application") 'objXL.Visible=True objXL.DisplayAlerts=False For Each f In WScript.Arguments objXL.WorkBooks.Open f For Each ws In objXL.ActiveWorkBook.Worksheets If ws.UsedRange.Rows.Count=1 and ws.UsedRange.Columns.Count=1 and ws.Cells(1,1)="" Then 'MsgBox ws.Name&"Empty" Else ws.SaveAs f & "." & ws.Name & ".csv", 6 End If Next objXL.ActiveWorkBook.Close Next objXL.Quit WScript.Quit 上記スクリプトファイルで ファイル名が「[元Excelファイル名].[シート名].csv」 のcsvファイルが出力されますが、これを ファイル名を「[シート名].csv」にするには どのようにすればいいのでしょうか。 ws.SaveAs f & "." & ws.Name & ".csv", 6 の箇所を ws.SaveAs ws.Name & ".csv", 6 に変更したのですが、うまくいきませんでした。
- ベストアンサー
- Visual Basic
- VBA。開いているテキストファイルを検索
エクセル2010.VBAで 開いているテキストファイルが複数あるとして、 それらの中に、 任意のテキストファイル名が含まれているかどうかを 調べるにはどうしたらいいですか? たとえば、エクセルワークシートなら For Each s In ActiveWorkbook.Worksheets という感じで網羅的に調べられますが、 テキストファイルの場合はどうしたらいいのでしょうか?
- ベストアンサー
- Excel(エクセル)
- エクセルVBAでFor each文
下記のようなコードを書きたいのですが「オブジェクトが必要です」というエラーが 出力されてしまいできないようです。何か代替案はありますでしょうか。 --- dim ws as worksheet with thisworkbook for each ws in array(.worksheets(1),.worksheets(2),.worksheets(3)) with ws 'ここに処理を書く end with next ws end with --- ちなみにこのbookにある全てワークシートで処理を回したいわけではなく 特定のシートのみで処理をしたいです。 エクセル2003です。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- ExcelシートをCSVファイルにする
Excel2000を使用してます。 Excelブックに3つのシートがあります。 シート1はメインシートとして「ボタン1」「ボタン2」が存在してます シート2はインプットデータ用シート シート3はアウトプットデータ用シートです シート1の「ボタン1」を押すとVBAが実行されシート2の情報を読み、 シート3に算出結果を出力する仕組みです。 次にシート1の「ボタン2」を押すとシート3の内容をCSVに出力したいのですが、 下記のロッジクではうまくいきません。 どこを修正すればよいのでしょうか? Sub CSV出力() Dim ONAME As String Dim しーと As Worksheet Dim 新しーと As Worksheet Dim PAS As String 'OUTパス名 PAS = ThisWorkbook.Path ONAME = PAS & "\" & "出力.CSV" '出力しーと Sheets("出力").Select Set しーと = ActiveSheet Set 新しーと = Worksheets.Add With 新しーと しーと.Copy .Move End With With ActiveWorkbook .SaveAs Filename:=ONAME, FileFormat:=xlCSV .Close False End With End Sub
- ベストアンサー
- その他(プログラミング・開発)
- エクセルのシートのデータをVBAを使ってCVS形式で保存したいのですが、文字化けしないようにするにはどうしたらいいでしょうか?
エクセルのシートのデータをVBAを使ってCVS形式で保存したいのですが、文字化けしてしまいます。手動で「名前を付けて保存」すると文字化けしません。文字化けしないようにするにはどうしたらいいでしょうか? どなたかお教えいただきたく、よろしくお願いします。 ---------------------------------------------------------------------- Sub test5() Dim aaa As String Dim fname As Variant aaa = Format(Now, "YYMMDD") fname = Application.GetSaveAsFilename(InitialFileName:=aaa & ".csv", fileFilter:="csvファイル(*.csv), *.csv") If fname = False Then Exit Sub '保存 Worksheets("sheet1").SaveAs fname End Sub
- ベストアンサー
- その他(プログラミング・開発)
- テキストファイルとして開くVBA
フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください
- 締切済み
- Visual Basic
- Excel VBA オブジェクトの指定方法と速度
Excel VBAについて質問です。 ワークシートを指定するときの書き方には色々ありますが、1~3の速度の順番はどうなりますか? オブジェクトは、変数に入れて使用したほうが速度が速くなるそうなので、 1より2のほうが速いと思いますが、3はどうでしょうか? 1.Worksheets("sheet1") 2.Dim ws As Worksheet Set ws = Worksheets("sheet1") 3.Sheet1 (VBE画面で表示されるシートのプロパティのオブジェクト名) Excelのオブジェクトについて詳しいかたがいらっしゃいましたら教えてください。 よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- どちらを使った方がいいでしょうか?
Sub test1() Dim ws As Worksheet For Each ws In Worksheets Debug.Print ws.Name Next End Sub Sub test2() Dim ws As Variant For Each ws In Worksheets Debug.Print ws.Name Next End Sub どちらも問題なく実行されますが、 VBA的にどちらを使った方がいいでしょうか?
- ベストアンサー
- Visual Basic
- Excel でテキストファイルを開くときに「テキストファイルウィザード」を起動させたい
Excel(Excel 2003)を「ファイル名を指定して実行」にて起動し(excel "C:\xxxx\xxx\xxx.txt")、Textファイル(.txt)を起動すると、Excel の機能の「テキストファイルウィザード」が起動されずにテキストファイルの内容がExcelのシートに展開されてしまいます。「テキストファイルウィザード」が起動されない為、区切り文字の指定ができず、特定の区切り文字を指定してファイルを開くことができません。 「ファイル名を指定して実行」にて、excel "C:\xxxx\xxx\xxx.txt" のように指定して実行した時に、「テキストファイルウィザード」が起動するように設定することはできませんでしょうか?
- 締切済み
- オフィス系ソフト
- エクセルVBA シート名の部分一致検索について エクセル2007
VBAでエクセルの全シート名を部分一致で検索したいと考えています。 そこで以下のコードを書いたのですが、 インプットボックスにどんな文字列を入力しても全てのシート名を 取得してしまって途方にくれています。 どなたかお助けください。 Sub test01() Dim name As String Dim ws As Worksheet shn = InputBox("検索文字列を入力") For Each ws In ThisWorkbook.Worksheets If ws.Name Like " * " & name & " * " Then ws.Activate MsgBox ws.Name End If Next ws End Sub
- 締切済み
- オフィス系ソフト
お礼
回答ありがとうございます。 試してみたところ無事出来ました。 このコードをじっくり読んで理解したいと思います。