Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3950 / 13644 ツリー ←次へ | 前へ→

【59297】(難)Formulaでエラー。MS社のバグ? りった 08/12/5(金) 11:22 質問[未読]
【59299】Re:(難)Formulaでエラー。MS社のバグ? neptune 08/12/5(金) 12:39 発言[未読]
【59300】Re:(難)Formulaでエラー。MS社のバグ? neptune 08/12/5(金) 12:41 発言[未読]
【59303】Re:(難)Formulaでエラー。MS社のバグ? Yuki 08/12/5(金) 14:46 発言[未読]
【59309】(ノ_・、) グスン りった 08/12/5(金) 17:30 発言[未読]
【59312】ρ(。 。、 ) イジイジ りった 08/12/5(金) 18:35 お礼[未読]
【59313】Re:ρ(。 。、 ) イジイジ neptune 08/12/5(金) 18:49 回答[未読]
【59314】\(@^∇^@)/ りった 08/12/5(金) 20:55 お礼[未読]

【59297】(難)Formulaでエラー。MS社のバグ?
質問  りった  - 08/12/5(金) 11:22 -

引用なし
パスワード
   いつもお世話になっております。

【状況】
業務でCSVをExcelに取り込んで集計する処理を行っているのですが、
エラーになってしまいました。
調べたところ、先頭がハイフン(自由な文章が書かれているセル)なので
数式として認識されValueを取る際エラーになっているようです。
hasFormulaで数式かを判定し、数式の場合は
「rng.value = "'" & rng.Formula」☆
で文字にしてしまおうと思ったのですが、
rng.Formula自体がエラーになります。
先頭がハイフンだが☆でエラーにならないデータもあります。

【再現データ】
再現条件は解かっていませんが、下記データで再現することは解かっています。
CSVファイルとして保存し、別のExcelファイルから開いて
Range("A1").Formula を参照して下さい。
(尚、改行コードはLF(=0x0A)です。CRLF(0x0D 0x0A)にすると再現しません。)

"−あいうえお−
あいうえお
あいうえお
あいうえお
あいうえお
あいうえお"

【質問】
1.Formulaでエラーになるセルの内容を取得する方法があれば御教示下さい。
 先頭に別の文字を付け、値取得後削る等(←例です。出来るか解かりません)
 強引な方法でかまいません。
2.CSVファイルを開かず(開くと遅い。表示上何行に折り返すかの計算を
 している様子)に、指定したセル座標のデータをCSVから取り出すことは
 出来ますでしょうか?
3.他に何か回避策があれば御教示下さい。
4.再現条件が解かれば御教示下さい。
・部分回答でかまいません。
・出来ればアクセスは使いたくありません。
 (本ツールを提供する先がアクセスをつかえなさそう)

【59299】Re:(難)Formulaでエラー。MS社のバグ?
発言  neptune  - 08/12/5(金) 12:39 -

引用なし
パスワード
   ▼りった さん:
こんにちは

再現テストも何もせずの思い付きで書くのでぜんぜん駄目ならごめん。

>調べたところ、先頭がハイフン(自由な文章が書かれているセル)なので
>数式として認識されValueを取る際エラーになっているようです。
Textプロパティは試しました?

>【質問】
>2.CSVファイルを開かず(開くと遅い。表示上何行に折り返すかの計算を
> している様子)に、指定したセル座標のデータをCSVから取り出すことは
> 出来ますでしょうか?
Excelに取り込まず、ジャグ配列とか、2次元配列とかにCSVを取り込んで
処理したらどうですか?
そうしたらX,Y座標で管理できそうですが?

>・出来ればアクセスは使いたくありません。
> (本ツールを提供する先がアクセスをつかえなさそう)
O/S標準でDAOかADOは入ってたと思いますからそれを使うのはどうですか?
Office95は知りませんけど、Officeがインストールされているなら
DAO,ADOのどちらかは使えるはずです。

SQLで表現できるならCSVに直接SQLを投げるとか。

【59300】Re:(難)Formulaでエラー。MS社のバグ?
発言  neptune  - 08/12/5(金) 12:41 -

引用なし
パスワード
   ▼りった さん:
送信してから気づきました。

>O/S標準でDAOかADOは入ってたと思いますからそれを使うのはどうですか?
すみません。これはO/Sにもよったのかな?95、98時代はどうだったのか
忘れましたので、当てにならないと思います。

【59303】Re:(難)Formulaでエラー。MS社のバグ?
発言  Yuki  - 08/12/5(金) 14:46 -

引用なし
パスワード
   ▼りった さん:

csvファイルを開く方法を変えてみたらどうでしょう。
データ->外部データの取込->データの取込
〜ウィザードに従って取込をすれば良いと思いますが
どうでしょう。

【59309】(ノ_・、) グスン
発言  りった  - 08/12/5(金) 17:30 -

引用なし
パスワード
   回答有難う御座います。

>>調べたところ、先頭がハイフン(自由な文章が書かれているセル)なので
>>数式として認識されValueを取る際エラーになっているようです。
>Textプロパティは試しました?
Textプロパティでもエラーになりました。
尚、質問時の記載が不適切でしたが、
Valueを参照すると、マクロは終了せずに、"エラー 2029"が帰ります。
Formulaを参照すると、マクロが終了します。

>>【質問】
>>2.CSVファイルを開かず(開くと遅い。表示上何行に折り返すかの計算を
>> している様子)に、指定したセル座標のデータをCSVから取り出すことは
>> 出来ますでしょうか?
>Excelに取り込まず、ジャグ配列とか、2次元配列とかにCSVを取り込んで
>処理したらどうですか?
「ジャグ配列とか、2次元配列とかにCSVを取り込」むにはどうしたら
宜しいでしょうか?
尚、ジャグ配列が何なのか解かっていません。

>csvファイルを開く方法を変えてみたらどうでしょう。
>データ->外部データの取込->データの取込
>〜ウィザードに従って取込をすれば良いと思いますが
>どうでしょう。
やたらと列数が多く日付の列が混在しているので厳しいです。

【59312】ρ(。 。、 ) イジイジ
お礼  りった  - 08/12/5(金) 18:35 -

引用なし
パスワード
   せかされて、運用で回避することとなりました。
回答有難う御座います。

【59313】Re:ρ(。 。、 ) イジイジ
回答  neptune  - 08/12/5(金) 18:49 -

引用なし
パスワード
   ▼りった さん:
あ〜あ・・・

せっかく書いたんでUPしときます。
ジャグ配列って配列の配列の事です。Variantを利用します。
Collectionに入れても同じことです。

Sub t()
Dim x() As String
Dim y() As Variant
Dim bytBuf() As Byte
Dim fNum As Long
Dim fLen As Long
Dim sBuf As String, sBuf2() As String
Dim i As Long, j As Long
Dim iMax As Long
Const sPath As String = "E:\Data\01HOKKAI.CSV"

  fLen = FileLen(sPath)
  ReDim bytBuf(fLen)
  
  fNum = FreeFile()
  
  Open sPath For Binary As #fNum
  Get #fNum, , bytBuf
  Close #fNum
  
  sBuf = StrConv(bytBuf, vbUnicode)

  sBuf2 = Split(sBuf, vbCrLf)
  iMax = UBound(sBuf2)
  ReDim y(iMax)
  For i = 0 To iMax - 1
    x = Split(sBuf2(i), ",")
    y(i) = x   '配列に配列を格納する
  Next i
  
  '20番目のレコードを出力してみる
  iMax = UBound(y(1))
  For i = 0 To iMax - 1
    Debug.Print y(20)(i)
  Next i
End Sub

【59314】\(@^∇^@)/
お礼  りった  - 08/12/5(金) 20:55 -

引用なし
パスワード
   回答有難う御座います。
今回のツールはもう出してしまいましたが、何かの機会に差し替えれればと思います。
頂いたコードはまだ習得中です。何か別のものにも使えそうです。

3950 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free