
毎度お世話になります。
EXCEL VBA で、CSVファイルを読み込み
マクロで17桁数字を表示したいのですが、どうしても出来ません。
Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "00000000000000000"
上記ですと15桁制限のため下2桁がゼロになってしまい
Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "@"
ですと1.2345E+16となってしまい
Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "'00000000000000000"
ですと'12345678901234500 となってしまいます。
セルの書式設定はあらかじめ文字列にしてありますが、これも
vbaで何らかの指定が必要なのでしょうか?
初心者でわからないことだらけですが、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No2のかたが言われているように、インポートのうけを文字列には
されていないようです(Variantで受けている)ので受け取った
値が数値になってしまいます。
dim X(1 tTo 4) as Stringとすれば文字列で受けます。
貼り付け時に数値文字混在データで問題があるのであれば
Cells(GYO, 1) = X(1)
Cells(GYO, 2) = Clng(X(2)) <- (例)longに変換
Cells(GYO, 4) = Cstr(X(4)) <- (例)文字列に変換
等を駆使すればいけるんじゃないでしょうか?
ありがとうございました!出来ました
変数xをstringにすればよかったんですね。
大変勉強になりました。ありがとうございました。
No.2
- 回答日時:
こんにちは。
CSVインポートをどのようにしているのか分かりませんが、文字列にして貼りつければよいだけです。
GYO = 1
For i = 1 To 4
If IsNumeric(Cells(GYO, i)) Then
Cells(GYO, i).Value = "'" & Cells(GYO, i).Value
End If
Next
インポートの仕方を変えて、文字列型の配列変数でそのまま置けば、数字の数値型への変換がおこりません。また、インポート自体に、上記のようなプレフィックス文字(PrefixCharacter)を付ければ、そのまま表示できます。
ありがとうございます。
上記方法を試してみましたが、やっぱり駄目でした(:_;)
ソースは以下のとおりです。
やりたいことは、セルAとDの17桁数字が異なるときに
出力したいのですが・・・
Option Explicit
' CSV形式テキストファイル(4カラム)読み込みサンプル
Sub READ_TextFile()
Const cnsFILTER = "csvファイル (*.csv),*.csv"
Dim xlAPP As Application
Dim intFF As Integer
Dim strFILENAME As String
Dim X(1 To 4) As Variant
Dim GYO As Long
Dim lngREC As Long
Dim i As Integer
Set xlAPP = Application
xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _
Title:=cnsTITLE)
If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub
intFF = FreeFile
Open strFILENAME For Input As #intFF
GYO = 1
Do Until EOF(intFF)
lngREC = lngREC + 1
xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)"
' レコードを読み込む(4項目のCSV)
Input #intFF, X(1), X(2), X(3), X(4)
For i = 1 To 4
If IsNumeric(Cells(GYO, i)) Then
Cells(GYO, i).Value = "'" & Cells(GYO, i).Value
End If
Next
If X(1) <> X(4) Then
Range(Cells(GYO, 1), Cells(GYO, 4)).Value = X '
GYO = GYO + 1
End If
Loop
Close #intFF
xlAPP.StatusBar = False
MsgBox "ファイル読み込みが完了しました。" & vbCr & _
"レコード件数=" & lngREC & "件", vbInformation, cnsTITLE
End Sub
結果は、'12345678901234600と表示されてしまいます・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba シートコピーの不具合 1 2022/06/25 17:48
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) Excelマクロ 同列内で複数の数式を繰り返す方法 5 2022/05/22 13:58
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
このQ&Aを見た人はこんなQ&Aも見ています
-
16桁以上の「0」に変換されてしまった数値を読み取る方法
Excel(エクセル)
-
16桁以上の数字を使った計算をしたい
その他(パソコン・スマホ・電化製品)
-
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
-
4
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
5
エクセルの多い桁数を表示させる方法
その他(プログラミング・Web制作)
-
6
excel上での16桁データの表示方法について
Excel(エクセル)
-
7
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
8
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アンチエイリアス
-
Left関数とRight関数を合わせた...
-
エクセルでセル内の文字列の最...
-
指定した文字の前の数字を取り出す
-
コンソメの瓶
-
Excel2003 VBA 文字列の比較で
-
firefoxで、特定の文字列を含む...
-
Python Django csv について
-
エクセルでアルファベットか数...
-
エクセルでSQLでいうところの「...
-
変数内に入った文字列の結合 UWSC
-
VBA shellでメールを作成した際...
-
latex 数式でテキストを書く
-
テキストファイルに一行文字を...
-
DOSコマンド
-
並べ替えについて教えて下さい
-
Androidアプリで別環境でのリソ...
-
sedなどで、特定の文字列内の数...
-
文字列からタブコードを取り除...
-
エクセルの関数について再度教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報