• ベストアンサー

VBscriptで、Excelのセルに文字列を入力するには?

VBScriptを使い、あるファイルから文字列を抜き出し、Excelのセルに入れるソフトを作りたいと考えています。 ほとんどうまくいっているのですが、どうしてもうまくいかない部分があります。それは、ファイルから抜き出したいくつかの文字列(例えば、”2-8-S1”)を.Cells(*,*).Valueを使って入れると、”1926/2/8”という日時データに変換されてしまう点です。 これを文字列のまま、入力するにはどうすればよいでしょうか? 基本的なことかもしれませんが、手元の参考書等をみても、うまく解決することが出来ず、困っています。 よろしくお願いいたします。

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

  • ベストアンサー
  • benelli
  • ベストアンサー率51% (78/152)
回答No.1

単純な方法としては与える文字列の頭に"'"(シングルクォーテーション)を挿入することです。 ***.Cells(*,*).Value = "'2-8-S1" ちゃんと文字列として入力させたい場合は、セルの表示形式を変更してから代入しましょう。 ***.Cells(*,*).NumberFormatLocal = "@" 'セルの表示形式を文字列に変更 ***.Cells(*,*).Value = "2-8-S1" '自動変換されずに文字列として認識。 VBSで直接確認はしていませんが上記の方法で対処できませんでしょうか。

deepsfx
質問者

お礼

"`"をつける方法はわかっていましたが、なんとかそのまま入力する方法がないものかと思っていました。 「.NumberFormatLocal = "@"」で、表示形式を文字列に変更できるんですね!!!探していたのはまさにこの方法です。 ありがとうございました!

関連するQ&A

  • Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換さ

    Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換されて困っています。 すごく困っております。どなたか教えて下さい。 状況を申し上げますと、以下のようなCSVデータがあります。 "住所1","住所2" "東京都港区青山","1-24-11" このとき、別なCSVにデータを移すという単純なものです。 通常は、 WsCount.Cells(1, 1).Value =Cells(2,1).value WsCount.Cells(1, 2).Value =Cells(2,2).value で、セルにある文字をそのまま、新しいシートのセルに移すだけのことですが、 何故か、"1-24-11"が日付に変換され、"2011/1/24"に変わってしまいます。 デバックなどで、途中経過を見ても既に日付にかわっており、 どうにも対応ができません。 以前は""で囲んである文字は、文字のまま認識していたと思いますが、 何故か今回はうまくいきません。 ちなみに、Excel2007です。 どなたか、教えて下さい。 宜しくお願いします。

  • エクセル セルの文字列の有無からほかのセルに数値を

    勤務リスト.xlsx におきまして セルE1に、午前休、 という文字列があれば セルF1に数値の0 セルG1に数値の2000 を入力 同様に セルEiに、午前休、 という文字列があれば セルFiに数値の0 セルGiに数値の2000 31日を計算にいれて iを1から30としました エクセルファイルの開発から マクロに行き 以下のコードをいれましたが ------------------------------- Sub 午前休み() Dim 選択シート As Sheets Dim i As Integer Set 選択シート = ActiveWindow.SelectedSheets If InStr(Cells(5, i), "午前休") > 0 Then Cells(6, i).Value = 0 Cells(7, i).Value = 2000 i = 1 Do Until i = 30 i = i + 1 Loop End If End Sub 上記 作動しません すみません 御教示くださいませ win10 office365

  • 文字列を1セル1文字で入力する

    エクセルの文字入力で困っています。 1セル1文字で効率的に文字入力ができる方法が ないか悩んでいます。 イメージとしては、文字列を入力して エンターキーを押した後、自動的に1セル1文字で 入力される方法があったら嬉しいなぁっと 思っています。 宜しくお願い致します。

  • Excelの「’」とセルの書式設定(文字列)の違い

    こんばんわ。 Excelの文字列表示について、教えてください。 数字を入力する際に、先頭に「'」を入力すると 文字列として入力することが出来ますが、 数字が入っているセルのセルの書式設定から 「文字列」に表示形式を変更することとの 違いはなんなんでしょうか? やり方は違うけれど、結果は同じということでしょうか? 「'」を入力すると、データが文字そのものに変わり、 表示形式を変更すると、見た目だけ(左揃えになるなど) 文字列のように見えるだけで、データは 数字のままということなんでしょうか?? また、文字列として入力された数字を Value関数で数値に変換してしまうのと セルの書式設定で「数値」に変更するというものも 同じように、違いが良く分かりません。。。 もう、頭の中が「??」だらけです。 違いを教えていただけたら・・・と思います。 どうぞよろしくお願いいたします<m(__)m>

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • Excel VBScript VBA セルコピー

    当方、Windows7 Pro 64bit 、Excel2010の環境です。 出来れば、VBScript希望ですが、VBAでも結構ですので 教えてください。 あるエクセルのファイルの特定のセルを 別のエクセルのファイルにコピーするとき、 x.Cells(1, 1).Value = y.Cells(1, 1).Value などとするのは分かっているのですが、 コピーされる元のセルの中身だけでなく、 フォントやフォントの色、 罫線の状況など、 設定されているそのままをコピーしたいのです。 上記のような情報を「設定する」方法は 調べると分かるのですが、 そのまま持ってくる方法は 私が調べた中では、出てきませんでした。 もちろん、 x.Cells(1, 1) = y.Cells(1, 1) とやってみましたが、ダメでした。 何か、方法はあるでしょうか? 教えてください。

  • 文字列aを一文字ずつExcelのセルに入力する方法

    Excel VBAについて確認させてください。 下記のエクセルマクロはエクセルのA列に入力されてある文字を順に読み込んで ユーザが入力したテキストファイル(=FN1)を開いて エクセルのA列に入力されてある文字が見つかった場合は削除する作業を 文字が入力されてある最後の行までループによって行い、 最終的に処理した文字列aを出力ファイル(=FN2)に保存するプログラムです。 このプログラムを改良して文字列aを出力ファイル(=FN2)に保存するのをやめて 文字列aを一文字ずつ、Excelのセルごとに1行ずつ入力するプログラムを作成したいのですが どのようにすればよいかご教授いただけますでしょうか。 以下、プログラム本文です。 ------------------------- Sub sample() Dim a As String Dim y As Long Dim x As String Dim FN1 As String Dim FN2 As String x = InputBox("チェックするファイル名を入力してください。(拡張子も含めてください。)") FN1 = ThisWorkbook.Path & "\" & x FN2 = ThisWorkbook.Path & "\チェック済" & x With CreateObject("Scripting.FileSystemObject").GetFile(FN1).OpenAsTextStream a = .ReadAll For y = 1 To Cells(Rows.Count, 1).End(xlUp).Row a = Replace(a, Cells(y, 1), "") '読み込んだテキストファイルにエクセルのA列にある文字が見つかった場合削除 a = Replace(a, vbCrLf, "") '改行コードの削除 a = Replace(a, vbTab, "") 'タブコードの削除 Next .Close End With With CreateObject("Scripting.FileSystemObject").OpenTextfile(FN2, 2, True) .Write a .Close End With End Sub

  • エクセルで時間セルをVBで文字列として取り込むには

    エクセルです。 時間セルがあって、エクセル上での表示では 12:30:15 という風に表示するようにセルの書式設定でしているのですが、そのセルを VBで取り出そうとして、 A = Cells( 1,1 ) とかってすると、Aには、0.66656 とかって数字が入ってきてしまいます。 Aは文字列として、DIM A as String とかってしているのですけどね これをちゃんとAに、12:30:15 という形の文字列として入れるのにはどうしたらいいのでしょか

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセルのマクロについて 文字列操作について

    文字列操作で困っています。 A3セル以下、A列に、04/、03/、99/。。。と文字列が入力されており、それぞれ、最初の2文字を取り出して数字に変換し、それぞれを変数 qwe1 qwe2 qwe3 ... に代入したいのです。 そのための構文が知りたいのです。 また、文字列のまま、たとえば上記の/を、変数 asd に代入するにはどうしたらよいのでしょうか? ちなみに、 Range("B3").Select ActiveCell.FormulaR1C1 = "=VALUE(MID(R[-2]C[1],1,2))" という形の構文で、一旦エクセルのセルに代入して、再度、変数に放り込む形だとうまくいくのですが、数列、数十行同じ作業を繰り返すために、for next 構文を使わないと、不便で使い物になりません。 そこで、R[-2]C[1] の部分に cells(qwe,1)を使ってもエラーが出てうまく作動しませんでした。 なお、エクセル2003、OS=XPです。 再度要約しますと、 1.文字列の一部を取り出して数字に変換し、それを変数に代入したい。 2.文字列の一部の文字を取り出して、それを変数に代入したい。 3.上記1,2を繰り返すので、その繰り返すことが出来る構文が知りたい。 以上です。 どなたか教えてください。