列AにデータがあるExcelシートがあります。セルには多くの特殊文字があります。txt形式でシートを保存すると、各行の先頭にコンマが逆になります。手動とマクロを使用して、ファイルを.txt形式で保存しようとしましたが、どうしてですか?それらを削除する方法は? remove the quotes。写真を添付することはできません
このコードを試してください。これはあなたが望むことをします。
[〜#〜] logic [〜#〜]
""
空白を使用し、同時に新しいファイルに書き込みます。コード(試行およびテスト済み)
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
'~~> Change this where and how you want to save the file
Const FlName = "C:\Users\Siddharth Rout\Desktop\MyWorkbook.txt"
Sub Sample()
Dim tmpFile As String
Dim MyData As String, strData() As String
Dim entireline As String
Dim filesize As Integer
'~~> Create a Temp File
tmpFile = TempPath & Format(Now, "ddmmyyyyhhmmss") & ".txt"
ActiveWorkbook.SaveAs Filename:=tmpFile _
, FileFormat:=xlText, CreateBackup:=False
'~~> Read the entire file in 1 Go!
Open tmpFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
'~~> Get a free file handle
filesize = FreeFile()
'~~> Open your file
Open FlName For Output As #filesize
For i = LBound(strData) To UBound(strData)
entireline = Replace(strData(i), """", "")
'~~> Export Text
Print #filesize, entireline
Next i
Close #filesize
MsgBox "Done"
End Sub
Function TempPath() As String
TempPath = String$(MAX_PATH, Chr$(0))
GetTempPath MAX_PATH, TempPath
TempPath = Replace(TempPath, Chr$(0), "")
End Function
[〜#〜] snapshots [〜#〜]
実際のワークブック
保存後
この質問はすでに回答されていますが、後で他の誰かがこれを見つけた場合に備えて代替案を提供したかったのです。
必要な区切り文字に応じて、これを行うことができますコードを記述することなく。元の質問では目的の出力タイプの詳細は説明していませんが、代わりの方法を次に示します。
最も簡単なオプションは、ファイルを「フォーマット済みテキスト(スペース区切り)」タイプとして保存することです。 VBAコード行は次のようになります。
ActiveWorkbook.SaveAs FileName:=myFileName, FileFormat:=xlTextPrinter, CreateBackup:=False
Excel 2007では、これによりファイル名の最後に.prnファイル拡張子が付けられますが、手動で名前を変更することで.txtに変更できます。
Excel 2010では、[名前を付けて保存]ダイアログで任意のファイル拡張子を指定できます。
注意すべき重要な点が1つあります。テキストファイルで使用される区切り文字の数は、Excelの列の幅に関連しています。
観察する:
になる:
うーん、これはどうですか。
セルをコピーします。
メモ帳を開きます。
貼り付け。
引用符や逆コンマは使用せず、特殊文字を保持しますOPが要求したものですまた、キャリッジリターンで区切られています。事(または良い事)。
単純な答えが目的の結果を提供する理由がわからないので、否定的なマークが付けられます。
午後の大半をこれに費やしました
ファイルへの書き込みには2つの一般的な方法があります。最初の方法は、直接ファイルアクセスの「書き込み」ステートメントです。これにより、引用符が追加されます。
2つ目は "ActiveWorkbook.SaveAs"または "ActiveWorksheet.SaveAs"で、どちらもアクティブなブックのファイル名を変更するという非常に悪い副作用があります。
ここでのソリューションは、私がオンラインで見つけたいくつかのソリューションのハイブリッドです。 1)選択したセルを新しいワークシートにコピーする2)各セルを1つずつ繰り返して、開いているファイルに「印刷」する3)一時的なワークシートを削除する.
この関数は、選択したセルで機能し、ファイル名の文字列を受け取るか、ファイル名の入力を求めます。
Function SaveFile(myFolder As String) As String
tempSheetName = "fileWrite_temp"
SaveFile = "False"
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Set myRange = Selection
'myRange.Select
Selection.Copy
'Ask user for folder to save text file to.
If myFolder = "Prompt" Then
myFolder = Application.GetSaveAsFilename(fileFilter:="XML Files (*.xml), *.xml, All Files (*), *")
End If
If myFolder = "False" Then
End
End If
Open myFolder For Output As #2
'This temporarily adds a sheet named "Test."
Sheets.Add.Name = tempSheetName
Sheets(tempSheetName).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To LastRow
For j = 1 To LastCol
CellData = CellData + Trim(ActiveCell(i, j).Value) + " "
Next j
Print #2, CellData; " "
CellData = ""
Next i
Close #2
'Remove temporary sheet.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Indicate save action.
MsgBox "Text File Saved to: " & vbNewLine & myFolder
SaveFile = myFolder
終了機能
同じ問題があります。Excelファイルから銀行支払い用の特定の.txtファイルを作成する必要があります。標準では各必須フィールドの後に一定数のコンマが必要であるため、.txtファイルは文字で区切ってはなりません。最も簡単な方法は、Excelファイルの接続をコピーしてメモ帳に貼り付けることです。
PRNソリューションは、セル内の単純なデータに対してのみ機能します。私にとっては、200文字のセルから最初の6つのサインのみをカットします。
これらはExcel 2007-2016の主なファイル形式です。注:Excel for the Macでは、値は+1です
51 = xlOpenXMLWorkbook (without macro's in 2007-2016, xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2016, xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007-2016 with or without macro's, xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007-2016, xls)
から XlFileFormat FileFormat Property
他の SaveAsメソッド のFileFormatNumbersに注意してください。
FileExtStr = ".csv": FileFormatNum = 6
FileExtStr = ".txt": FileFormatNum = -4158
FileExtStr = ".prn": FileFormatNum = 36
answer from this question は、この質問に対する答えをより簡単に提供しました。
Writeは、後でInputで使用される機械可読ファイルを生成するために設計された特別なステートメントです。
Printを使用して、データをいじるのを防ぎます。
ユーザーGSergに感謝