A 回答 (14件中1~10件)
- 最新から表示
- 回答順に表示
No.14
- 回答日時:
marbinさん、こんにちは。
Wendy02です。
>※私のコードを実際に試したら、一つのテキストファイルが
>1000文字を超える超えることもありました。??です。
すみません、言葉が足らなかったようです。
Print #2, naiyou;
Close #2
naiyou = ""
MyLen = 0
naiyou = dat
End If
この部分で、最後のdatは、nayouに移し変えされていますから、2度目からは、1,000文字を越えますが、論理的に、 datが確保されていない最初の時だけ、文字数が足りませんね。だから、1回目だけ、datを別に確保してあげればよいかもしれません。
なお、私のコードの場合は、改行コードを、1文字と数えていますから、多少、可読される文字数は足りません。
No.13
- 回答日時:
皆さん、こんにちは。
Wendy02さん、ご指摘ありがとうございます。
ご指摘の内容、勉強不足でわからないところがありますの
で勉強してみます。
※私のコードを実際に試したら、一つのテキストファイルが
1000文字を超える超えることもありました。??です。
外部データの取り込み、でエクセルに取込んだほうがいいの
かもしれません。
No.12
- 回答日時:
marbin様 こんばんは。
質問者さんが見ていないような気がしますので、今、No.11 の最新バージョンを、私のほうで見させていただきました。
ちょっと気になったことですが、ループして、
If MyLen + Len(dat) > 1001 Then
で、1000を越えると、
Open Newtxtmei For Output As #2
Print #2, naiyou;
この部分に入っていくわけですが、たぶん、新たに加えた Dat 分が加わっていないように思います。つまり、Len(dat) が、300,400,400 と数を数えて、3度目で、700 + 400 >1001 になるのですが、3度目の400 分が、Print の時のnaiyou に加わっていないように思います。
そうすると、出力された文字数が足りなくなってしまうような気がします。
datが、CrLF までの文字列ですから、いずれにしても、多い少ないはできてしまいます。
私のうろ覚えでは、Line ~ Input 方式は、Buffer に全部溜め込んで、切り分けるというようなことをしたと思います。もちろん、Buffer は、String 型にしておくわけですね。どのぐらいの容量があるのは、あまり覚えがないのですが、数メガだったと思います。その大きさの根拠は、インターネットのWebページのBufferは、結構あるような気がしますが、Excel VBAのString型変数で、まかなえます。
聞くところによると、Scripting.FileSystemObjectのTextStream の ReadAll だと、コケるということを聞いたことがあります。単なる噂なのか知りませんが、試してみてことがありません。
せっかく、何度も精力的に書かれたわけで、そのままになってしまうのは惜しいので、書かせていただきました。もし、お気を悪くされたら、お見捨てください。
なお、個人的なことですが、私は、Desktop ではなくて、
SpecialFolders("MyDocuments")
にしました。
No.11
- 回答日時:
またまた修正版です。
Sub txtbunkatu()
Dim txtmei As String
Dim Newol As String
Dim Newtxtmei As String
Dim i As Long
Dim j As Long
Dim MyLen As Long
Dim naiyou As String
txtmei = Application.GetOpenFilename(Title:="テキストファイル")
If txtmei = "False" Then Exit Sub
newfol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & _
Format(Now, "yymmdd_hhmmss")
MkDir (newfol)
Open txtmei For Input As #1
Do Until EOF(1)
Line Input #1, dat
i = i + 1
If MyLen + Len(dat) > 1001 Then
j = j + 1
Newtxtmei = newfol & "\" & "Newtxt" & j & ".txt"
If Dir(Newtxtmei) <> "" Then
MsgBox "既に同名のファイルが存在します。"
Exit Sub
Else
Open Newtxtmei For Output As #2
Print #2, naiyou;
Close #2
naiyou = ""
MyLen = 0
naiyou = dat
End If
Else
MyLen = MyLen + Len(dat)
naiyou = naiyou & vbCrLf & dat
End If
Loop
Close #1
If naiyou <> "" Then
Newtxtmei = newfol & "\" & "Newtxt" & j + 1 & ".txt"
Open Newtxtmei For Output As #1
Print #1, naiyou;
Close #1
naiyou = ""
MyLen = 0
End If
End Sub
No.8
- 回答日時:
こんばんは。
私もちょっと考えてみました。
同じフォルダに、枝番が付きます。ただし、9999 を越える分には、途中で止まってしまいます。通常、この種のものは、Binary 処理か、ライン処理をするような気がします。この手のものは、ほとんど手がけたことがありませんから、あまり私のは自信がありません。
'なるべく標準モジュールに登録してください。
'-------------------------------------------
Sub TextSpliting()
Dim FileName As String
Dim FileBaseName As String
Dim objFS As Object
Dim objText As Object
Dim myText As String
Dim i As Long
Dim myFno As Integer
Const SPLIT_WORD_COUNT As Integer = 1000
FileName = Application.GetOpenFilename("Textファイルl(*.txt),*.txt")
If FileName = "False" Then Exit Sub
FileBaseName = Mid$(FileName, 1, InStrRev(FileName, ".") - 1)
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objText = objFS.OpenTextFile(FileName)
i = 1
Do While objText.AtEndOfLine <> True
myText = objText.Read(SPLIT_WORD_COUNT)
myFno = FreeFile()
Do
Open FileBaseName & " _" & Format$(i, "0000") & ".txt" For Output As #myFno
Print #myFno, myText
Close #myFno
i = i + 1
If i > 9999 Then Exit Do
Loop Until Dir(FileBaseName & " _" & Format$(i, "0000") & ".txt") = ""
Loop
objText.Close
Set objText = Nothing
Set objFS = Nothing
End Sub
No.7
- 回答日時:
一応修正版は出来ました。
しかし、時刻データがおかしくなるようです。
原因不明です。すみません。
Sub txtbunkatu()
Dim txtmei As String
Dim Newol As String
Dim Newtxtmei As String
Dim i As Long
Dim j As Long
Dim MyLen As Long
Dim naiyou As String
txtmei = Application.GetOpenFilename(Title:="テキストファイル")
If txtmei = "False" Then Exit Sub
newfol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & _
Format(Now, "yymmdd_hhmmss")
MkDir (newfol)
Open txtmei For Input As #1
Do Until EOF(1)
Input #1, dat
i = i + 1
If MyLen + Len(dat) > 1001 Then
j = j + 1
Newtxtmei = newfol & "\" & "Newtxt" & j & ".txt"
If Dir(Newtxtmei) <> "" Then
MsgBox "既に同名のファイルが存在します。"
Exit Sub
Else
Open Newtxtmei For Output As #2
Print #2, naiyou;
Close #2
naiyou = ""
MyLen = 0
naiyou = dat
End If
Else
MyLen = MyLen + Len(dat)
naiyou = naiyou & vbCrLf & dat
End If
Loop
Close #1
End Sub
No.5
- 回答日時:
フォルダ作成バージョンが出来たのでアップします。
Sub txtbunkatu()
Dim txtmei As String
Dim Newol As String
Dim Newtxtmei As String
Dim i As Long
Dim j As Long
Dim MyLen As Long
Dim naiyou As String
txtmei = Application.GetOpenFilename(Title:="テキストファイル")
If txtmei = "False" Then Exit Sub
newfol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & _
Format(Now, "yymmdd_hhmmss")
MkDir (newfol)
Open txtmei For Input As #1
Do Until EOF(1)
Input #1, dat
i = i + 1
If MyLen + Len(dat) > 1001 Then
j = j + 1
Newtxtmei = newfol & "\" & "Newtxt" & j & ".txt"
If Dir(Newtxtmei) <> "" Then
MsgBox "既に同名のファイルが存在します。"
Exit Sub
Else
Open Newtxtmei For Output As #2
Print #2, naiyou;
Close #2
naiyou = ""
MyLen = 0
End If
Else
MyLen = MyLen + Len(dat)
naiyou = naiyou & vbCrLf & dat
End If
Loop
Close #1
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- Excel(エクセル) エクセル マクロ テキストファイルを取り込む 複数の区切り文字で別々のセルに格納するには? 3 2022/08/10 21:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでdatファイルを作成??
-
バッチファイルが作成できない
-
複数のテキストファイルをexcel...
-
batファイル処理でのテキストフ...
-
テキストファイルの文字色に色...
-
複数テキストファイルをエクセ...
-
テキストファイルを開かずに中...
-
複数のファイルを同時検索し、...
-
マクロでメモ帳に貼り付け
-
Atokのユーザー辞書に、複数の...
-
テキスト比較について
-
バッチによるショートカットの...
-
1フォルダに保存できるファイル...
-
【python】pandasでExcel(...
-
Lubuntuでフォントをインストー...
-
ダウンロード不可PDFファイルは...
-
【Excel VBA】PDFを作成して,...
-
Excel VBA シートを指定して...
-
Microsoft Access エラー 3051
-
カスタムコントロールのOCAファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のテキストファイルをexcel...
-
Excelでdatファイルを作成??
-
バッチファイルが作成できない
-
batファイル処理でのテキストフ...
-
テキストファイルの文字色に色...
-
複数のファイルを同時検索し、...
-
一気にずばっと複数のメールを...
-
ファイル名の特定文字だけ削除...
-
CDの曲名をテキストファイルで...
-
VBSでテキストファイルのタブ区...
-
CADでグラフ作成
-
KADOKAWA電撃文庫ってフォーマ...
-
windowsへscp
-
文字の頭文字順に自動移動
-
マクロでメモ帳に貼り付け
-
powershell で出力したテキスト...
-
ExcelVBA テキストファイルから...
-
Atokのユーザー辞書に、複数の...
-
インデザインのテキスト流し込み
-
複数テキストファイルをエクセ...
おすすめ情報