
ある列の値が、数値化されてしまっていて、先頭の「0」が消えてる状態となっています。
本来4桁なのですが、
800(本来は0800)
10(本来は0010)
7(本来は0007)
となってしまっています。
調べていて以下のソースで、先頭の「0埋め」が出来るようになりました。
For i = 3 To 最終行
With Cells(i, "P")
.NumberFormatLocal = "@"
.Value = Format(.Value, "0000")
End With
Next i
しかし、P~U列の間で同様の処理をしたいのですが、
同じ記述を6回繰り返さないもっとスマートな書き方ありますか?
またK列、L列、O列は離れていて、2桁化"00"の処理が必要ですが、
離れてる場合は、繰り返すしかないでしょうか?
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
こんにちは
>良かったら見様見真似で切り貼りした拙いソースを見て頂けませんか?
おっしゃる通り、CSVデータをExcelで開き、範囲をコピペしているものですね。
#5のコードはQueryTableメソッドを介してシートに書き出しています。
CSVは、区切り文字でデータ化したテキストデータなのでテキストデータとして処理を行っています。
Excelのバージョンによりますが、
2013だとデータタグ、データの取得、テキストから だったか、
それ以降だと データタグ、データの取得、従来のウィザード、テキストから(レガシ)で記録されるマクロです。
ウィザードのオプションで判る通り、オプションが多くありますが、デフォルトプロパティは書かなくても大丈夫です。
参考サイト https://www.tipsfound.com/vba/18014
メリットは処理が早く処理を書きやすい(私的意見)
デメリットは同じシートに追加していく場合、うまく追加できない所です。
ただ、うまく追加できないと思っているのは、私だけかもしれません。
CSVデータの抽出方法は色々ありますが、個人的に最も使用しない方法は
Excelで開いて抽出する方法です。
ありがた迷惑な処理や文字化けなど後でデータ加工をしなくては使えないケースが多いからです。
VBAなどでCSVデータを取得する場合、CSVデータの内容で分ける事が多い用に思います。
Line Input、、配列=Split(?,",") これが一番使う事が多いかも
参考 http://officetanaka.net/excel/vba/speed/s15.htm
ちなみにExcel導入時、何もしないとCSV拡張子はExcelに関連づけされますが、私の場合CSV用のエディターに関連付けをして、直接Excelで開く事は多分20年以上していません。
CSVデータについては、昔やたら躓いた記憶があります。
情報サイトも多いので主だった3,4種類を機会があれば試しながら理解されると良いと思います。
No.5
- 回答日時:
こんばんは
P列からUれるに関しては
CSV読み込む時に文字列として抽出するのはどうでしょう。
Sub csv_inData()
Dim Target As String
Dim SH1 As Worksheet
Set SH1 = Worksheets("Sheet1")
Target = Application.GetOpenFilename("csv_File,*.csv")
If Target = "False" Then Exit Sub
Call in_csvQuery(Target, SH1)
'
'
End Sub
Private Sub in_csvQuery(pachFiele_name As String, SH1 As Worksheet)
Dim qt As QueryTable
On Error Resume Next
SH1.Cells.ClearContents
Set qt = SH1.QueryTables.Add(Connection:="TEXT;" & pachFiele_name, Destination:=SH1.Range("A1"))
With qt
.TextFilePlatform = 932
.TextFileParseType = xlDelimited ' 区切り文字の形式
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2) 'P~U 文字列 2
.TextFileCommaDelimiter = True ' カンマ区切り
.RefreshStyle = xlOverwriteCells ' セルに上書き
.Refresh
.Delete
End With
End Sub
V列以降デフォルト 1
ありがとうございます!
読み込むときに属性を決めておけるなら最高です。
ちゃんと動作しました。
----------
良かったら見様見真似で切り貼りした拙いソースを見て頂けませんか?
これは単にCSVファイルをダブルクリックしてExcel上で開いて、
そのセル範囲をコピペしているだけと思うのですが、
Qchan1962さんとの違いを簡単に解説していただけると幸いです。
FName = Application.GetOpenFilename("csv_File,*.csv")
Exit Sub
最終行 = Cells(Rows.Count, 5).End(xlUp).Row
Range("4:" & 最終行).Delete ' 4 ~ 最終行を削除
Set srcBook = Workbooks.Open(FName)
最終行 = Cells(Rows.Count, 2).End(xlUp).Row
Range("A1:R" & 最終行).Select
Selection.Copy
Windows(現在のファイル名).Activate
ActiveWindow.SmallScroll Down:=-9
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
No.4
- 回答日時:
i = 最終行
With Range(Cells(i, "P"), Cells(i , "U"))
.NumberFormatLocal = "@"
.Value = Format(.Value, "0000")
End With
ダメ?
ありがとうございます。
こちらの全ソースを開示してないので仕方ないかもしれませんが、
そのまま使用したら、
「実行時エラー13 型が一致しません」と出ました。
No.3の方が良いかもしれません。
No.3
- 回答日時:
P~U列を処理する場合です。
Dim wcols As Variant
Dim wcol As Variant
wcols = Array("P", "Q", "R", "S", "T", "U")
For i = 3 To 最終行
For Each wcol In wcols
With Cells(i, wcol)
.NumberFormatLocal = "@"
.Value = Format(.Value, "0000")
End With
Next
Next i
K列、L列、O列の場合も、同様にしてください。
頂いたソースで成功しました。
連続してなくても良いのが良さそうですね。
他の方法とかも調査してみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
このQ&Aを見た人はこんなQ&Aも見ています
-
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
エクセルvbaで転記したのですが、数字のゼロが消えてしまいます。 ゼロも転記するためにはどうしたらい
Excel(エクセル)
-
VBAを使って選択した範囲の数字(電話番号)の先頭に0を付ける方法が知りたいです。
Visual Basic(VBA)
-
-
4
VBA 先頭文字の0(ゼロ)を省略しないでコピー
Access(アクセス)
-
5
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
6
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
7
VBAによるBinaryの置換後に先頭の0"を残す方法"
PowerPoint(パワーポイント)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
10
CSVファイルの「0落ち」にVBA
Access(アクセス)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
13
エクセル 数字の前の「00」を消す方法
Excel(エクセル)
-
14
エクセルマクロで「1」を「01」に変換したい
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
17
VBA初心者です。電話番号の数字の前に0を表示させたいです。
Visual Basic(VBA)
-
18
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
19
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
20
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGrdViewに関連付けたデータ...
-
VBAでページ番号、ページ最終行...
-
【Excel VBA】先頭の「0」飛び...
-
.NET SqlDataReader のレコー...
-
Listviewのデータを上から順番...
-
DataGridViewで表示に制限をつ...
-
VB.net CrystalReportでプロジ...
-
MSFlexGridのデータ表示位置の設定
-
GASでスプレッドシートの一番上...
-
VBA ピボットテーブル自動更新
-
VBによる可変長ファイルの読み書き
-
format 関数 小数点を消す方法
-
エクセルマクロ小数点桁数
-
ASP.Net ObjectDataSource
-
GoogleスプレッドシートからExc...
-
ASP.NET DataGridの項目数(列...
-
PHP+CSVを使った一覧表示&詳細...
-
ASP C# データベースから1行取得
-
こんばんわ。
-
GridViewにバインドせずにデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGrdViewに関連付けたデータ...
-
【Excel VBA】先頭の「0」飛び...
-
Listviewのデータを上から順番...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GASでスプレッドシートの一番上...
-
MSFlexGridのデータ表示位置の設定
-
DataGridViewで表示に制限をつ...
-
GridViewにバインドせずにデー...
-
ACCESSのVBAで[Split]について
-
コンパイルエラーSubまたは...
-
VBによる可変長ファイルの読み書き
-
VBA ピボットテーブル自動更新
-
VB6 → EXCEL にデーター出力
-
【ASP.NET MVC】一覧編集画面
-
通貨表示??3桁区切りでカン...
-
1台のサーバへの同一セグメント...
-
ASP C# データベースから1行取得
-
クラス内だけでhtmlデータをダ...
-
GoogleスプレッドシートからExc...
おすすめ情報