- ベストアンサー
VBAでテキストファイルを保存
VBAでテキストファイルを保存したいのですが、EUCで保存できません。 EUCで保存するにはどうしたらいいのでしょうか? Open myFile For Output As #myNo です。
- urourojp
- お礼率34% (34/100)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
すみません。#2 で一部訂正します。 レイトバインディングなので WriteTextFile プロシージャの 変数宣言部辺りに、 Const adTypeText = 2 を追加して下さい。これがないとエラーになりますね...
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 ADODB.Stream を使うと割と簡単です。エラートラップはしてませんが。 Option Explicit Sub Sample() Dim strText As String strText = "テキストを指定した文字コードでファイル書き出しテスト" Call WriteTextFile(strText, "C:\sample.txt", 3) ' 3: EUC-JP End Sub Sub WriteTextFile(ByVal strText As String, _ ByVal strFilepath As String, _ ByVal intCharset As Integer) Dim STM As Object ' ADODB.Stream Dim strCharset As String Select Case intCharset Case 2: strCharset = "iso-2022-jp" Case 3: strCharset = "EUC-JP" Case 4: strCharset = "UTF-8" Case Else strCharset = "Shift_JIS" End Select Set STM = CreateObject("ADODB.Stream") With STM .Open .Type = adTypeText .Charset = strCharset .WriteText strText .SaveToFile strFilepath .Close End With Set STM = Nothing End Sub
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
VBA で文字コードEUCで保存はできないと思います。 文字コードを変換するようなライブラリを使うか、 いったんシフトJISで普通にファイルを作成した後、 変換ツールを起動して変換するというような手順になるのではないかと思います。
関連するQ&A
- Excel 2010 VBA:ファイル名を読み込む
下は複数のcsvファイルを一つに合体するVBAです。これにシートの右端に読み取ったファイル名を追加するにはどうしたらよいでしょうか。 よろしくお願いします。 Sub macro1() Dim myPath As String Dim myFile As String Dim s As String myPath = ThisWorkbook.Path & "\" On Error Resume Next Kill myPath & "合体版.csv" On Error GoTo 0 myFile = Dir(myPath & "*.csv") If myFile = "" Then Exit Sub Open myPath & "合体版.csv" For Output As #1 Do Until myFile = "" Open myPath & myFile For Input As #2 Do Until EOF(2) Line Input #2, s Print #1, s Loop Close #2 myFile = Dir() Loop Close #1 End Sub
- ベストアンサー
- Excel(エクセル)
- 【VBA】ファイルを開く→シートをコピー→保存
VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- テキストファイルへの書き出し
ExcelVBAについて教えてください。 Dim path As String Dim FullPath As String Path ="C:\" Dim FN As String FN ="abc.txt" Dim intFF As Integer intFF = FreeFile FullPath = Path & "\" & FN Open FullPath For Output As #intFF Print #intFF, FullPath Close #intFF とやると、Open FullPathのところで、実行時エラー 76、パスが見つかりませんと表示されてしまいます。 やりたいことは、Excel VBAでテキストファイルを新規につくり、そこへ書き出し、保存したいです。ファイル名はFullPathで指定したファイル名を新規で作り出し、それに対して書き出し、保存をしたいです。 何が間違っているのでこのようなエラーが表示されてしまうのでしょうか?回避方法がありましたらご教授お願いいたします。
- ベストアンサー
- Visual Basic
- VBAでUTF-8テキストファイル作成したい
VBA,文字コードなどにあかるくない初心者です。 VBAを利用して、エクセルのとあるセルに記載されている文字を UTF-8形式でテキストファイルに出力させたいと考えています。 (多言語対応のため・・・、韓国語や中国語でセルに記載された文字を UTF-8形式でテキストファイルに文字化けしないよう出力させたいためです。) どのように実現が可能か、いくつか検索をしてみましたが 難しくてわかりませんでした。 VBAのサンプルコードを教えていただけないでしょうか。 もしくは、初心者でもわかりやすい実現方法が記載されたサイトを教えていただけないでしょうか。 よろしくお願い致します。 ※今文字コードを意識せずに下記のようなVBAを書いています。(簡略化して記載しています。) Sub test() Open "C:\Sample\Data.txt" For Output As #1 'ファイルを新規作成 'データ書き込み Print #1, Cells(1, 1) Close #1 End Sub
- ベストアンサー
- Visual Basic
- VBA-読み込んだテキストファイルを並び替えて書き出したい
VBA-読み込んだテキストファイルを並び替えて書き出したい ch1=FreeFile Open A for Input as ch1 ch2=FreeFile Open B for Input as ch2 DO while Not EOF(ch1) Line Input #ch1,buf Print #ch2,buf Loop Close #ch1,#ch2 で読み込み、書き出すことはできました。 やりたいことは、書き出す時に、項目を並べ替えたいのです。 例 にんじん りんご ねこ だいこん バナナ いぬ ↓ りんご ねこ にんじん バナナ いぬ だいこん よろしくお願いいたします。 区切りはタブです。
- ベストアンサー
- その他(プログラミング・開発)
- ファイル保存
Private Sub Command1_Click() intFileNo = FreeFile Open "sample_01.csv" For Output As #intFileNo Print #intFileNo, Text1.Text Close #intFileNo End Sub このプログラムではテキストボックスに表示されたcsvをファイル名sample_01.csvとして保存できるのですが、 これだとテキストボックスに表示されているのが何でもファイル名がsample_01.csvとなってしまいます>< こうではなくて、テキストボックスに表示されている、『○○○.csv』というのをそのままファイル名として保存したいのです。 sample_01.csvの部分をtext1.textにかえてやったらエラーがでてできませんでした・・・ どなたかご教授お願い致しますm(__)m
- 締切済み
- Visual Basic
- VBAの初歩的な質問
VBAを仕事の関係上勉強することになりました。 しかし、仕事で使うのはVBAではなくVBらしいです。 始めたばかりでまだ右も左もわからない状態なのですが、 VBとVBAは何が違うのでしょうか? VBAの方がVBの範囲を全て網羅しているということでしょうか? 本屋で参考書を買おうと思っているので、 VBとVBAのどちらの参考書を選べばいいか教えてください。 それからもうひとつ内容的な質問になるのですが、 ファイルをオープンする時、 Open "テキストファイル,*.txt" For Output As #1 で開いて Close #1で閉じる方法と OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt") でダイアログから開く方法を見つけたのですが 2つ目の方法ではなぜcloseしなくていいのでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- 新規テキストファイルを作成して日付名で保存したい。
すみません誰か、教えて下さい。 新規でテキストファイルを作成して、日付名で保存を しようとしたのですが、ファイル名が不正とのエラーが出ます。 どうすればいいか、教えて頂けませんでしょうか。 また、保存先の指定方法も分かりません。保存先の指定方法も あわせて教えて頂けませんでしょうか。 宜しくお願いします。 Sub 保存() Dim myFileNo As Integer Dim i As Long Dim myLastRow As Long Dim IMA As String IMA = Now & ".txt" Worksheets("内容").Activate myLastRow = Range("A1").CurrentRegion.Rows.Count myFileNo = FreeFile Open IMA For Output As myFileNo For i = 1 To myLastRow Write #myFileNo, Cells(i, 3) Next i Close #myFileNo End Sub
- ベストアンサー
- その他MS Office製品
- なぜvbaコードに「#」を付けてもエラーにならないのか?
なぜvbaコードに「#」を付けてもエラーにならないのか? Sub Sample21() Dim n As Long n = FreeFile Open "D:\Test.txt" For Output As #n Print #n, Now Close #n End Sub というテキストファイルに書き込むマクロですが 「#n」はなぜエラーにならないのですか? 標準モジュールでは、 「#」と書くとコンパイルエラーになるのに For Output As #n だと大丈夫な理由が知りたいです。 あと、気付いた事は 「#」は「&」や「=」と同じ色で表示されます。
- ベストアンサー
- オフィス系ソフト
- VBAにてEXCEL以外のファイル(テキストなど)がすでに開いているかの確認方法
はじめまして。EXCELのVBAについてアドバイスをお願いします。 EXCELファイル以外のTEXTやCSVファイルなどが、すでに開かれているかを確認する方法はありますでしょうか。 EXCELシートのデータをCSVファイルに移動させるような処理を実施したいのですが、そのCSVファイルがすでに開かれているファイルである場合、 Open ファイル名 For Output As #1 を発行したところでエラーが発生してしまいます。 [on error resume next] での対応方法はありますが、できれば、GOTO文的な方法はとらない方法が取れればありがたいです。 事前にそのファイルが開かれているかをチェックできる方法などアドバイスを頂戴できたらと存じます よろしくお願いいたします。
- 締切済み
- Visual Basic
お礼
ありがとうございました。 うまくいきました。 ただ、レイトはちょっと処理が遅いみたいですね。 アーリーでやってみました。 また、よろしくお願いします。