次の方法で共有

QueryTables.Addを使用した際にセルの内容が途切れてしまう

Anonymous
2022-03-02T07:16:44+00:00

複数のCSVファイルをひとつのExcelファイルにまとめたのち、Excelファイルを社内システムに投稿するような作業があります。

VBAでQueryTables.Addを使用して、各ファイルのデータを読み込み、とあるブックのSheet1にどんどん

追記していこうと思いましたが、ひとつのセルの中に長い文章が入っているセルの場合、文章が途中で

途切れてしまいます。

途中でとぎれる原因がわからず、苦慮しています。

文字数制限などがあったりするのでしょうか。

~~~一部抜粋~~~

Set WS = Worksheets("Sheet1")

LastR = WS.Cells(Rows.Count, 1).End(xlUp).Row + 1

For n = 1 To UBound(FilePaths)

Set QTB = WS.QueryTables.Add("TEXT;" & FilePaths(n), WS.Cells(LastR, 1)) 

With QTB 

    .TextFileCommaDelimiter = True   ' カンマ区切り 

    .Refresh 

    .Delete 

End With 

WS.Rows(LastR).Delete 

LastR = WS.Cells(Rows.Count, 1).End(xlUp).Row + 1 

Next n

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

5 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2022-03-09T08:39:40+00:00

    > テキスト型の列の値をダブルクォーテーションで囲ってあります。> 文字数はもともとのCSVを一旦エクセルで開きLEN関数で確認したのみです。> 読み込んだあとの文字数がすべて255文字

    もし、ここでの文字数が「読み込んだ時点での文字数」ではなく、
    「読み込んでからブックを保存して閉じ、再び開き直した時の文字数」
    であるとするなら、現時点において唯一考えられる原因は、
    そのブックが Excel 5.0/95 ブック以前のファイル形式で保存されていることです。

    古いファイル保存形式の場合、ワークシートの 1 つのセルに保存可能な
    文字列の長さは 255 文字までに制限されます。

    コード内における WS の親である Workbook オブジェクトが
    既存のブックと新規ブックのどちらを参照しているのかは不明ですが、
    とりあえずその Workbook オブジェクトの FileFormat プロパティの
    値を確認されることをお奨めします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2022-03-09T06:51:55+00:00

    ・そもそも、それらの CSV ファイルはどのようにして作成されたものなのか。

    →CSVは社内システムよりCSVとしてエクスポートしたものになります。こちらのシステムの

    設計構築にはかかわっていないので詳細はわかりません。1ファイル大体1000~1500行程度、5個~10個の処理をするので全部で5000~10000行前後です。
    テキスト型の列の値をダブルクォーテーションで囲ってあります。

    ・それらの「元の文字数」はどのようにしてカウントしたのか。

    文字数はもともとのCSVを一旦エクセルで開きLEN関数で確認したのみです。

    >少なくとも、同様のコードをこちらでテストした限りでは
    >1000 文字程度の文字列を問題なく取り込めることを確認しています。

    ご確認いただきありがとうございます。通常は問題ないということですね。

    自分でももう少し確認してみます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2022-03-03T07:31:42+00:00

    > いくつか確認すると、読み込んだあとの文字数がすべて255文字でした
    何だか Access データベースのテーブルにテキストファイルをインポートしたり、
    Access データベースの選択クエリをテキストファイルとしてエクスポートしたりした時に
    起こり得るような動作をしているようですが。

    ・そもそも、それらの CSV ファイルはどのようにして作成されたものなのか。

    ・それらの「元の文字数」はどのようにしてカウントしたのか。

    > 文字数制限などがあったりするのでしょうか。

    Excel の仕様上、1 つのセルに格納できる文字列の長さは
    32,767 文字までですので、それを超える長さの文字列でなければ
    基本的に取り込みが可能です。

    少なくとも、同様のコードをこちらでテストした限りでは
    1000 文字程度の文字列を問題なく取り込めることを確認しています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2022-03-03T05:39:08+00:00

    ありがとうございます。

    いくつか確認すると、読み込んだあとの文字数がすべて255文字でしたので

    そういうものなんだと認識することにしました。

    別の方法を考えたいと思います。

    元の文字数  追記後の文字数

    1535文字  255文字

    718文字  255文字

    1059文字  255文字

    1105文字  255文字

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2022-03-03T04:49:35+00:00

    > VBAでQueryTables.Addを使用して、各ファイルのデータを読み込み、> とあるブックのSheet1にどんどん追記していこうと思いましたが、> ひとつのセルの中に長い文章が入っているセルの場合、> 文章が途中で途切れてしまいます。

    ・その「長い文章」の文字列の長さは具体的に何文字なのか。

    ・具体的にその文字列の何文字目で途切れているのか。

    ・同様の「長い文章」が途切れるケースが複数件発生している場合、
     それらは一様に同じ文字位置で途切れているのか。

    ・その列のデータ属性がテキスト型であるとして、
     元の CSV ファイルのフォーマットにおいて、
     テキスト型の列の値をダブルクォーテーションなどの
     引用符で囲む処理を行なっていないのか。

    とりあえず、上記の点について確認されることをお奨めします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません