
毎度お世話になります。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
Excelで3E8を3.00E+8にしない方...
-
EXCELで=より左の文字を一括で...
-
最も多い文字列を検索するには
-
Excelで指数表現しないようにす...
-
Msgboxの×が押されたとき
-
【Excel VBA】複数ある特定の文...
-
VBScriptでEUC文字列をSJIS文字...
-
Left関数とRight関数を合わせた...
-
エクセルで文字列の最大値を抽...
-
VBAを使って選択した範囲の数字...
-
VBAで、セルの一部の文字色を変...
-
PDFのファイル名をリネームをし...
-
エクセル 数値データを桁をそ...
-
“丸(〇/○/◯)”に似た文字…
-
CStringの文字列検索&抜き出し...
-
ACCESSのSQLでのカンマ’認識に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
-
MS SQLServer のSQLで文字列の...
-
Excelで指数表現しないようにす...
-
ORCLEでの小数の表示方法の変更...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
aaa.bbb.ccc という、「ドット...
-
同一セル内に関数と文字列を同...
おすすめ情報