No.8ベストアンサー
- 回答日時:
こんにちは。
話の流れからするとマクロの利用が可能かどうかは微妙なところですが、下記のコードでご希望の動作は可能です。
1.マクロ[OpenCSV]を実行
2.CSVを開くためのダイアログが表示されます
3.ファイルを選択し、OKをクリック
4.新しいブックが作成され、データを読み込みます
新規ブック上にCSVファイルのデータを読み込むため、元のCSVファイルを直接編集できるわけではありません。
この点については、マクロを改造すれば可能かと思いますが。ご参考までに。
Sub OpenCSV()
Dim strTarget As String
Dim n As Long, i As Long
Dim tmp As String, buf As Variant
Dim WB As Workbook
On Error GoTo ExitHandler
'CSVファイルの指定
strTarget = Application.GetOpenFilename(FileFilter:="CSVファイル,*.csv")
'新規ブックの作成
Set WB = Workbooks.Add
'読込み処理
Application.ScreenUpdating = False
n = FreeFile
Open strTarget For Input As #n
i = 1
Do Until EOF(n)
Line Input #n, tmp
buf = Split(tmp, ",") 'Split関数はExcel2000以上のみ
WB.Sheets("Sheet1").Range(Cells(i, 1), Cells(i, UBound(buf) + 1)) = buf
If i = 65536 Then
MsgBox "65536行以上のデータは読み込めません。中止します。", vbCritical
GoTo ExitHandler
End If
i = i + 1
Loop
ExitHandler:
Close #n
Set WB = Nothing
Application.ScreenUpdating = True
End Sub
ありがとうございます。
回答が届いている事に気付かずに一人迷走していました。
一応下記のコードでVBの実行ファイルを作ってみました。
KenKen_SPさんの方がスマートでしたね・・・
Private Sub Command1_Click()
On Error GoTo Err
Dim filename As String
Dim filename_new As String
Dim rec As String
CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "変換するファイルの選択"
CommonDialog1.Filter = "CSVファイル|*.CSV"
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
filename_new = Left(filename, Len(filename) - 4) & "(データ変換済).csv"
Open filename For Input As #1
Open filename_new For Output As #2
Do Until EOF(1)
Line Input #1, rec
rec = Replace(rec, """,""", """,""'")
Print #2, rec
Loop
Close #2
Close #1
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(filename_new)
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True
xlApp.Application.DisplayAlerts = False
Dim x, y
x = 1
Do
xlSheet.Range(xlSheet.Cells(x, 1), xlSheet.Cells(x, 200)).NumberFormat = "@"
For y = 1 To 200
If Left(xlSheet.Cells(x, y), 1) = "'" Then
If Len(xlSheet.Cells(x, y)) = 1 Then
xlSheet.Cells(x, y) = ""
Else
xlSheet.Cells(x, y) = Right(xlSheet.Cells(x, y), Len(xlSheet.Cells(x, y)) - 1)
End If
End If
Next
x = x + 1
Loop Until xlSheet.Cells(x, 1) = ""
xlApp.ActiveWorkbook.SaveAs filename:= Left(filename, Len(filename) - 4) & "(データ変換済).xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Kill filename_new
End
xlApp.Application.DisplayAlerts = True
Exit Sub
Err:
End Sub
No.9
- 回答日時:
もし、ACCESSをお持ちなら、16桁を超える数値が入る部分をテキストとしてテーブルを取り込んで、そのままの形でExcelへ吐き出すといったマクロを作成してみればどうですか?
起動時にマクロを実行させて、吐き出した後に自動でACCESSを終了させれば、作業をされる方にとっては、Wクリック一回分の手間が増えただけですみますよ。
上記の作業は別にプログラムを書かなくても可能ですし、意外と簡単に出来るのでどうでしょう。全くACCESSを触ったことが無ければ、少し難しいかもしれませんが。
どうもありがとうございました。
Accessでそんなことまで出来るんですね。
わざわざVBで実行ファイル作ってしまいました・・・
No.7
- 回答日時:
カテゴリから外れてしまいますけど、
どうしてもExcelでなければダメでしょうか?
私も、スキルがまちまちな第三者のユーザにCSVファイルを扱ってもらわなければならないということがありまして、そのときの結論としましては「フリーのCSVエディタを使用していただく」というのがベストでした。
結構Excel風にできていますので、ユーザさんにとっても違和感なく操作できるようでした。
選択肢の一つとしてお考え下さい。
参考URL:http://www.asukaze.net/soft/cassava/index.html
No.5
- 回答日時:
#1
すみませんでません。旧バージョンです
「データ」-「外部データの取り込み」-「データの取り込み」で取り込むとでます
この回答への補足
この方法も素人には難しい気がします。
しかも、やっかいなことにこのCSVデータには不要な改行コードが含まれているせいで、この方法だとうまく表示されません。
No.4
- 回答日時:
あいまいな記憶で申し訳ないのですが、開く対象のcsvファイルの拡張子がcsvだとExcelはウィザードを使用しないで勝手に開いてしまったと思います。
可能でしたらファイルの拡張子をtxtなどにしてやるとウィザードが動くと思います。
もしかしたらそこで書式を設定できるかも知れません。
間違っていたらごめんなさい。
それで出来ない場合は、#3さんの回答にあるとおり、開いた後で書式設定したほうがいいと思います。
この回答への補足
確かに拡張子変更でTXTデータにしてから、
Excelで開くと書式設定が出来ました。
しかし、操作を行うのはPCの素人で、
全角と半角を間違えてしまうくらいの
レベルです。
もっと簡単な方法はないでしょうか・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のcsvファイルを1つのEXCEL...
-
複数のCSVファイルを横に並べて...
-
CSVファイルを全て文字列型で開く
-
ロータスアプローチのリストボ...
-
ワードで選択範囲だけの改行を...
-
エクセルでツールバーに「縮小...
-
VBA、Excelのworkbook.open に...
-
cellsで特定の離れた範囲を選択...
-
別ブックからユーザーフォーム...
-
エクセル終了時の保存確認メッ...
-
マクロでマクロを削除する
-
EXCELで日付を自動でファイル名...
-
複数のデータ系列の線の太さを...
-
【ExcelVBA】クエリの更新とピ...
-
ファイルリネームの良い知恵を...
-
別のパソコンでエクセルのマク...
-
マクロを消すマクロは不可能?
-
エクセルで印刷する方法 エクセ...
-
EXCEL マクロ クリップボードク...
-
マクロを設定したのに、拡張子...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
大量のCSVデータを1つのエ...
-
VBAでCSVの1行目だけを書き換え...
-
CSVファイルの結合(重複データ...
-
EXCELにcsv形式の外部データを...
-
複数のcsvファイルを1つのEXCEL...
-
二つのCSVファイルを照らし合わ...
-
Excel VBAを使った複数のCSVフ...
-
「ほかのアプリケーションを無...
-
datファイル→csvファイル→datフ...
-
【VBA初心者】同じフォルダ内の...
-
二つのファイル間でデータリン...
-
EXCELLの動きが遅い
-
VBAでユーザーフォーム上に参照...
-
破損したExcelファイルの内容を...
-
エクセルの日付への自動変換を...
-
ExcelでCSVファイル読み込み時...
-
エクセルの関数、VBAの使い分け
おすすめ情報