• ベストアンサー

エクセルVBAに関する二三質問

いつもお世話になっております。またまたなんですが、みなさんの知恵をお借りしたく、エクセルVBAに関する二三質問 をさせていただきたいと思います。 1.シートの書式は残ってますが、入力規則が全部消えました。原因はなんでしょうか。まったく見当つきません。 2.VBAでセルに対して諸処理を行ってもすぐには変わらず、一回そのセルをダブルクリックして入力状態にして、Enterを押すと正しい結果が出ます。何もしないと、変わらないんです・・・ 3. CSVファイル "山田太郎","1234","56789" がありますが、ブックとして読込む分には、「""」「,」も自動的に取れますが、テキストファイルとしてよむと「""」が自動的にとれないんです、 Replace(tmp(0),chr(15),"") Replace(tmp(1),chr(15),"") Replace(tmp(2),chr(15),"") ・・・ とすると、ただでさえ遅いのに、さらに倍くらい遅くなります。10Mのファイルを読込むのに15分くらいかかります。こんなものでしょうか。 お分かりの範囲でかまいませんので、ぜひご教授願います。

noname#147912
noname#147912

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 1,2 は、直接マクロに関係ないか、また、自分の中で十分に設定など調査してください。 ただ、入力規則は、何かに対してコピーや貼り付けを行えば消えます。 3. ですが、あまりマクロが得意でなかったら、QueryTable を試してくみください。 記録マクロで、データ-外部データの取り込み-データの取り込み(xl2000,テキストデータの取り込み) で作ってあげて、ちょっと加工します。そうすれば出来上がります。これも、そうやってできたものです。とても簡単にできます。設定がおかしかったら、もう一度、記録マクロで取り出して、加工してみてください。最後に、QueyTalbeを削除するのは、インポートした列を削除したるすると、メッセージが出てくるからです。本来は、もう少し省略したりしますが、今回は、そのまま使っています。 Dim FileName As String   FileName = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")   If FileName = "False" Then Exit Sub      With ActiveSheet.QueryTables.Add(Connection:= _     "TEXT;" & FileName, Destination:=Range("A1"))     .RefreshOnFileOpen = False     .RefreshStyle = xlOverwriteCells '上書き設定     .AdjustColumnWidth = False     .TextFilePlatform = xlWindows     .TextFileStartRow = 1     .TextFileParseType = xlDelimited     .TextFileSpaceDelimiter = True     .TextFileConsecutiveDelimiter = True     .TextFileTextQualifier = xlTextQualifierDoubleQuote     .TextFileTabDelimiter = True     .TextFileCommaDelimiter = True     .Refresh BackgroundQuery:=False   End With ActiveSheet.QueryTables(1).Delete   

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

2 ツールーオプションー「計算方法」タブー手動になっている(する)と、そういう風になりますね。 3 テキストで読み込めば、改行、復帰以外の文字は全部同じ資格でで表示されます。(CSVを読み込む時のような、カンマは項目の区切り、””は文字列をくくるもの、通常は省いて表示のような作成ソフトと読み込みソフトの間の了解事項が)何の約束もないわけです。 ですから質問はあたりまえ。 VBAででもテキストファイルとして読み込み、、カンマで区切り(SPLIT関数)、””は取り除く(Replace関数)処理をしてエクセルのセルにセットすれば、コードのステップ数は10行程度のものです。 ほかの方法として、データー区切り位置でよみこみ、””を省く工夫ができないか勉強してください。 ーー 1はあまりここの質問では出てきません。構造的な原因があって、誤って消去しやすいという報告も聞いたことがありません。 こういう牽引追求は、再現性が限りなくあるように、どういう場合に 起こりやすいか、自身が再現しないか色々やってみることです。起こったときの状況を思い出すことです。 再現性がほぼつかめて、原因がわからない場合に質問することになるでしょう。エクセルのバグ・不親切など疑うのは最後に来る手段でしょう。

関連するQ&A

  • (エクセル2000)書式変更できない

    "山田太郎","000","111" "山田次郎","001","333" "山田三郎","003","555" ・・・(約2万行、10MBくらい) 「データ→外部データの取り込み→テキストファイルの取り込み」でテキストファイルを「文字型」として取り込みまでは問題なくできますが、ただここで取り込んだデータは右「クリック→セルの書式設定」してもすぐには画面に反映されず、そのセルを選択し、入力状態にし、Enterをもう一度押すと、書式が変わります。 ちなみにツールオプションの計算方法はきちんと「自動計算」になっています またちなみにテキストファイルを「標準」で取り込むと前0抜けします。「山田太郎 0 111」になってしまいます。 なぜ書式変更しても画面反映されないでしょうか。お願いします。

  • =code(" ") で値が160となる文字をEXCEL VBAで消したい

    EXCEL2002です。 あるセルに半角スペースを入力し、マクロで Cells.Replace Chr(&H20), "" と走らせるときれいに消えてくれます。ちなみにこの半角スペースを=code(" ")で調べると値は32となります。 同じやり方で=code(" ")で調べると160の値となる文字があります。これはスペースのようですが、半角でも全角のスペースでもないようです。 この文字をVBAの上記の方法で消したい場合にCells.Replace Chr(xxxx), "" ←xxxxの部分は何といれたらよいのでしょうか?

  • エクセル VBA

    エクセルのVBAでの質問です。 1つのセルの中にカンマで処理したデータがあるとします。 例えば A組,32番,山田太郎,男,12歳,45人中35位,性格明るい この1つのセルでたとえば3番目だけの「山田太郎」を VBAで取り出す方法はあるのでしょうか。 要するに1つのセルの中でカンマで区切られたデータを 個々に取り出す方法か知りたいのです。 どなたか教えてください。 なぜこのようなことが必要かといいますと、 歯科において、レセ電が導入されることになりました。 そこでそれを開発しているのですが、 最後に点数の検算をしようと考えていまして、 その点数をセルから取り出す方法が知りたいのであります。 もしどなたかご存知でしたら、是非、ご教示ください。 よろしくお願い申し上げます。

  • エクセルでこんなのをつくりたいのですが、、

    エクセルでこんなのをつくりたいのですが、、 こんばんわ。エクセルで以下のようなものを作ろうと、参考書片手にがんばっている者です。 例1) ・シート1のセルA1に『山田』と入力 ・同じくシート1のセルA2に『太郎』と入力 ↓ ・シート2のセルA1に『山田』、A2に『太郎』と赤文字で表示 例2) ・シート1のセルA1に『山田』と入力 ・同じくシート1のセルA2に『一太郎』と入力 ↓ ・シート3のセルAに『山田』、A2に『一太郎』とサイズ20Pで表示 つまり、シート1に入力した文字の文字数によって、それぞれ、違う文字体裁が設定してあるシートに表示させようとしています。 条件付書式?それとも文字を抜き出す関数なのかと考えましたが、多分、これはVBAをつかわないとできない事なのでわと思い質問させていただきました。 よろしければ、参考になるサイト、ヒントなどありましたら、教えてください。お願いします。

  • 【VBA ・ エクセル】 テキストファイルから特定情報をぬきだすには

    下記のようなテキストファイルから、山田太郎の後ろの数値のみを、エクセルのシートに抜き出すにはどのようにしたらよいのでしょうか。 A1セルに30、A2セルに40、A3セルに60、のように入力したいです。よろしくおねがいします。 山田太郎 30点 aaaaaa30aaaaaaaaaaa bbbbbb20bbbbbbbbbbb ccccccccccccccccccc 山田太郎 40点 ssssss30sssssss eeeeeee40eeeeeeeeee fffffffffffffffffffffff 山田太郎 60点

  • エクセル操作について(VBA)

    こんばんは。いつもお世話になってます。 エクセルの操作ですが、 シート1に A1セル 8:10 B1セル 12:05 C1セル 235(B1-A1の分換算) シート2に A1 7:01 B1 7:02 C1 7:03 D1 7:04 …  … ○1 8:10 … … △1 12:05 と入力されているとして、 ○2から△2まで(236セル)、自動的に色がつくようにしたいのですが、 関数や条件付き書式等で対応できるでしょうか? VBAならなんとかできそうですか? よろしくお願いします。

  • エクセルでの文字列の分割&結合、年齢の更新について

    テキストファイルをエクセルに読み込ませて編集した後に、テキストファイルとして保存して あるソフトで使用したいと思っています。 そのソフトの仕様で思うようにいかないのでアドバイス下さい。 [山田太郎_28歳]といった一つのセルを翌年度に[山田太郎_29歳]にしたいのですが どういう方法を取れば良いでしょうか? テキストを開く際、[区切り位置]機能を使って[山田太郎]と[28歳]でセルを分けると _(アンダーライン)が消えてしまいますし… これが不可能な場合、[山田太郎_28歳]といった一つのセルを [山田太郎],[_28歳]もしくは[山田太郎_],[28歳](アンダーラインはどちらかに) と二つのセルに分ける方法はありますでしょうか? その場合、[_28歳]もしくは[28歳]を翌年度に[29歳]にしたいのですが どういう方法を取れば良いでしょうか? 最終的には元のセルに[山田太郎_29歳]としたいです。 VBAは分かりません。

  • エクセルでお聞きしたいことがあります。

    エクセルでお聞きしたいことがあります。 例えばセルA1に山田と入力してセルB2に太郎と入力します。 そしてセルA3に =A1&B2 と入力すると山田太郎となりますが、 これを苗字と名前の間に空白を入れたいです。→ 山田 太郎 初歩的な質問ですが宜しくお願いします。

  • エクセルVBAで指定先のセルの値でデータ抽出

    エクセルVBAで作った売上帳シートのF2セルに顧客名を入力するようにしています。 その入力した顧客名のみの内容をオートフィルで抽出させるようにしたいのですが、うまくいきません。 Sub 顧客抽出() Range("B4").AutoFilter Field:=2, Criteria1:="山田太郎" End Sub でマクロを実行させるとできるのですが、『山田太郎』の部分は、F2セルに入力した顧客名で実行させたいのです。 どのようにすればできるのでしょうか?

  • エクセル VBA

    最終行から順番に下へ同列で入力するVBAを教えて下さい。 EXCELのVBAで教えて下さい。 シート1のA列にはB列が入力されると自動入力されるNo.があり、C~G列もB列が入力されると自動入力されます。 B列には日付が、H列には3~4桁の数字が入力したいのですが、 入力行は必ず最下行のセルB、Gな為、VBAでフォームを作成し、 入力実行ボタンを押すことにより、最下行のセルB、Gに反映されるように したいです。 又、上記入力後に、シート2のH~N列をコピーして、シート3のA~G列に値のみの貼り付けを行い保存した後、シート3のA~G列をコピーして csvファイルを作成して保存したいです。 一連の流れを、フォームの入力実行ボタンを押すことで実行したいのですができるのでしょうか? 宜しく御願い致します。

専門家に質問してみよう