3

したい:

  • 「コメンター」というシートの使用範囲をコピー
  • ThisWorkbook と同じディレクトリに ".txt" ファイル ("Kommentar.txt") を作成します。
  • 以前にコピーした使用範囲を貼り付けます
  • 「.txt」ファイルを保存します

私は持っている:

Sub CreateAfile()

Dim pth As String
pth = ThisWorkbook.path
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Dim a As Object
Set a = fs.CreateTextFile(pth & "\Kommentar.txt", True)
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Kommentar")

Dim rng As Range
Set rng = sh.UsedRange
a.WriteLine (rng)
a.Close

End Sub

私は得る

実行時エラー '13' 不一致

インラインa.WriteLine (rng)関数は、書き込み範囲を受け入れません。

4

4 に答える 4

5

範囲はおそらく複数のセルで構成されているため、それらをループしてすべてのテキストを文字列変数に取得する必要があります。Variant 変数を使用すると、値をコピーして、セル内のすべてのデータの正しい次元の配列を自動的に取得し、それをループしてテキストをコピーできます。

Function GetTextFromRangeText(ByVal poRange As Range) As String
    Dim vRange As Variant
    Dim sRet As String
    Dim i As Integer
    Dim j As Integer

    If Not poRange Is Nothing Then

        vRange = poRange

        For i = LBound(vRange) To UBound(vRange)
            For j = LBound(vRange, 2) To UBound(vRange, 2)
                sRet = sRet & vRange(i, j)
            Next j
            sRet = sRet & vbCrLf
        Next i
    End If

    GetTextFromRangeText = sRet
End Function

a.WriteLine (rng)行を次のように置き換えて、コード内の関数を呼び出します。

Dim sRange As String
sRange = GetTextFromRangeText(rng)
Call a.WriteLine(sRange)
于 2013-05-06T09:50:55.003 に答える
2

あなたがそれを行うことができるかどうかわからない。行ごとに書き出す必要があると思います。

これが代替オプションです。
FSO を使用する代わりに、シートを .txt ファイルとして保存してみてください。ここにいくつかのサンプルコードがあります。クレジットはhttp://goo.gl/mEHVx に移動する必要があります

Option Explicit

'Copy the contents of a worksheet, and save it as a new workbook as a .txt file
Sub Kommentar_Tab()
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim wbDest As Workbook
Dim fName As String

'References
Set wbSource = ActiveWorkbook
Set wsSource = ThisWorkbook.Sheets("Kommentar")
Set wbDest = Workbooks.Add

'Copy range on original sheet
'Using usedrange can be risky and may return the wrong result.
wsSource.UsedRange.Copy

'Save in new workbook
wbDest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False

'Get file name and location
fName = ThisWorkbook.Path & "\Kommentar.txt"

'Save new tab delimited file
wbDest.SaveAs fName, xlText

wbDest.Close SaveChanges:=True

End Sub
于 2013-05-06T10:11:22.270 に答える