毎度お世話になります。
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
16桁以上の「0」に変換されてしまった数値を読み取る方法
Excel(エクセル)
-
16桁以上の数字を使った計算をしたい
その他(パソコン・スマホ・電化製品)
-
excel上での16桁データの表示方法について
Excel(エクセル)
-
-
4
copyRecordsetの数値16桁以上について
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
エクセルの多い桁数を表示させる方法
その他(プログラミング・Web制作)
-
7
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
8
VBAでcallで呼び出したsubを終了させる
Visual Basic(VBA)
-
9
ユーザーフォーム スクロールバー 非表示にしたい
Excel(エクセル)
-
10
UserForm1.Showでエラーになります。
工学
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
13
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
14
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[C言語]fputsとfprintfの違い
-
エクセルでアルファベットか数...
-
C言語で文字列の中の文字列のカ...
-
Excelはなんで先頭の0を消すん...
-
マクロ処理でのループの記述に...
-
【Excel VBA】複数ある特定の文...
-
sedなどで、特定の文字列の後の...
-
文字列からカンマを取り除きたい
-
エクセルでセル内の文字列の最...
-
Left関数とRight関数を合わせた...
-
A B C D E の五文字のすべてを...
-
VBAにおける文字列結合と繰り返...
-
VBの「As String * 128」とは?
-
OnTime 使用時のプロシージャへ...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
【COBOL】文字列から数値項目に...
-
同一セル内に関数と文字列を同...
-
StringGridで選択した箇所の文...
-
MS SQLServer のSQLで文字列の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報