• ベストアンサー

[Excel VBA] ODBCによる外部データ取込で書式が変わる。

ExcelのVBAでODBCを使用してiSeriesのデータを取り込み、 シートに貼り付ける作業を行いました。 VB関連は素人ですが、↓を参考にして何とか作成しました。 http://firebird.skr.jp/wiki/Excel%20VBA%A5%B5%A5%F3%A5%D7%A5%EB(ADO%A1%A2ODBC) ところが、iSeriesの中では全角の数字として入っているデータが、 Excelで受信すると表示形式が日付に勝手に変更されてしまいます。 後で書式設定を標準に変えると半角のデータとなってしまいます。 何か解決法はありませんでしょうか? Windows XP Professional SP3 Excel 2003 iSeries v5.4 / v5.2 iSeries Access for Windows v5.2 SI23978

noname#131633
noname#131633

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

  • ベストアンサー
回答No.3

サンプル通りに作ったので有れば、ちょっと変更してみてください。 レコード件数が多くても処理が速くなります。(少ない時は、あまり関係ないかも) > row = 2 > While (Not recordSet.EOF) And row < 60000 > For col = 0 To recordSet.Fields.Count - 1 > outPutSheet.Cells(row, col + 1).Value = recordSet.Fields(col).Value 'データ > Next col > recordSet.MoveNext > row = row + 1 > Wend outPutSheet.Range("A2").CopyFromRecordset recordSet, 60000 '列幅を自動調整 必要なければコメントに・・・ outPutSheet.Columns("A:AZ").EntireColumn.AutoFit たぶん、これで治るかと思います。

noname#131633
質問者

お礼

回答ありがとうございます。 その方法を使ってみましたら劇的に速度が速くなり感動しています。 書式も勝手に変わることもなく大変助かりました。

その他の回答 (2)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

書式を文字列に変更しても半角になってしまう場合、 文字列を全角にするコードを書く。 Range(範囲) = strconv(文字列, vbWide) で代入しなおしてあげる。 ただ、1セルの中に全角と半角を混在させたい場合は 少々面倒なことになります。

noname#131633
質問者

お礼

回答ありがとうございます。 どうも標準のままだと日付に変更されますが、 予め文字列にしておくと変わらないみたいでした。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

データをシートに展開する前に、文字列としたい列は事前に書式を ”文字列”に変更しておけばいいのでは? 変更の仕方はマクロの自動記録でわかりますよ。 違っていたらすいません。

noname#131633
質問者

お礼

回答ありがとうございます。 予め文字列にしておくと勝手に日付に変更されることはありませんでした。

関連するQ&A

  • 全角英数字を半角に excel vba

    インターネットで全角を半角に変換するvbaを調べたら、strconvみたいな関数の説明がいろいろあったので、私のケースにあてはめて考えましたがどうもしっくりきません。例えばセルの A1,A2,A3..............A200位まで(最後の位置A200は毎回変わります)全角の英字 (TOKYO, OSAKA,NAGOYA) など都市の名前がいろいろ入っているですがそれをすべて半角に変換するvba関数はどういった表記でできるかご教授願います。毎月の仕事で必要なEXCEL作業の一部でエクセルのASC関数などは使用せずにvbaのをくみこみたくここで質問を入れてみました。vba全くの初心者なので簡単な表記であれば助かります。

  • EXCEL2000のVBAで*.dbf形式データからデータを抽出するには(ODBCとの連携について)

    こんにちは 「データベースなら任せて!!」 という方におたずねします。 最近、EXCEL2000のVBA講習をやることになりました。 VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては うまく説明できません。 いろいろ調べてますが、よくわかりません。 やりたいことは、 複数のデータベースファイル(*.dbf)があります、 それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように 制御したいのですが、 まず、 疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。 疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。 おたすけください。

  • htmlから取り込んだ&nbsp;を消したい EXCEL VBA

    WIN XP HOME,EXCEL2002を使用しています。 あるWEBサイトから取り込んだデータに「やまだ たろう」とあります。この「やまだ」と「たろう」の間に、&nbsp;(実際にはスペースのように見えます)というデータが入っており、最終的にEXCEL VBAでCSVファイルに変換すると「やまだ?たろう」となってしまいます。 この「?」を無くして「やまだたろう」(間にスペースは不要)としたいのですが、どのようにすればいいのでしょうか? ちなみに↓の"a"のところに半角スペースや、全角スペースなどを入れてみましたが、NGでした。 Cells.Replace What:="a", Replacement:="", どなたかよろしくお願いいたします。

  • Excel関数、VBAで可能か教えてください

    いつもこちらの識者の皆様にはお世話になっております。 Excelのことで質問させてください。 A1-A3セルに下記のようなデータがあります。 東京都千代田区千代田1丁目1-1日本マンション 101 東京都千代田区千代田1丁目1-2 東京都千代田区千代田1丁目2 これをそれぞれ、B列に号地までの住所、C列に物件名と部屋番号に分けたいのですが、関数もしくはVBAで可能でしょうか? 定義としては、 1.物件名と部屋番号の間には必ず半角スペースがある。  (半角スペースを含まないセルはそのままB列にデータをコピーでOK) 2.番地と号地は半角数字、物件名は全角。 一戸建てのデータはifで半角スペースを含まないものをそのまま持ってくればいいんですが、集合住宅の場合、どのようにしたらできるのか分からず行き詰っています。 vbaでsplを使うことも考えましたが、うまくいきそうにありません。 どなたか、上記内容の場合どのような関数、もしくは構文が適しているか教えていただけませんでしょうか。 よろしくお願いいたします。

  • EXCEL2000 データを結合したい。。

    お世話になっております。 EXCEL2000 です。 たとえば、Aと、Bと、Cのデータをけつごうしたいのですが、 その場合は、 =A1&B1&C1 でいいとおもいますが、 たしかにけつごうできるのですが、 A全角スペースB半角スペースB とやりたいのです。 どうすればいいのでしょう? 単純に式にそのスペースをいれればいいのでしょうか?

  • 桐からODBCでEXCELデータを読み込む方法

    桐9-2012からODBC接続でサーバーにあるEXCELデータを読み込ませたいと考えていますが、うまくいかず、原因が分からずに困っております。 お手数をおかけしますがご教示頂けますようお願い致します。 【環境】 パソコン環境 Microsoft Windows 7(x64) 桐9-2012(http://www.kthree.co.jp/kiri/) Microsoft Office2010 Professional ウイルス対策ソフト未インストール、Windowsファイアウォール無効 IPアドレス:192.168.1.10/24 サーバー環境 Microsoft Windows Server2008R2 Microsoft Office2010 Professional ウイルス対策ソフト未インストール、Windowsファイアウォール無効 IPアドレス:192.168.1.20/24 【状況】 1.パソコンにインストールされている桐からサーバーの共有フォルダにあるEXCELデータをクロス・エクセル機能で読み込むことはできる。 2.パソコンにインストールされている桐の外部DBを使用してサーバーの共有フォルダにあるEXCELデータを読み込もうとすると下記のエラーが表示される。(ODBC64ビット版) ------------------------------------------------------------------------------------------------------------------------------- KD1672:ODBCエラー データソース固有エラーコード:0 SQLSTATE:IM014 [Microsoft][ODBC Driver Manager]指定されたDSNには、ドライバーとアプリケーションとのアーキーテクチャーの不一致が含まれています。 ------------------------------------------------------------------------------------------------------------------------------- 3.パソコンにインストールされている桐の外部DBを使用してサーバーの共有フォルダにあるEXCELデータを読み込もうとするとエラーは表示されないがEXCELが読み込めない。(ODBC32ビット版)

  • Excelの外部データの取り込みについて

    Office for Mac 2004を使っています。 Excelで メニューの[データ] ↓ [外部データの取り込み] ↓ [新しいデータベースクエリ] と選択すると「ODBCドライバマネージャがインストールされていません」とインストールを勧められます。 が、ODBCドライバマネージャとMicrosoft Queryは2004の英語版にしか付いていないことがわかりました。 (Microsoft Query v.Xはネットに転がっていたのですが、当然ですが2004環境にはインストールできませんでした。) やりたいことは別のサーバにあるMysqlとつないでデータの取り出し、追加、更新、削除です。 追加、更新、削除があるためcsvでいったん吐き出して読むということでは要件が満たせません。 英語版(2004)を購入すれば使用可能なのでしょうか? (テーブル名、列名は英数で中のデータは日本語が入っています。) また、他の方法はないのでしょうか? Office for Mac英語版で実際に使用したことがある方いらっしゃいませんか?

    • 締切済み
    • Mac
  • アクセスの外部データ(エクセル)の取り込み。VBA

    アクセスの外部データ(エクセル)の取り込み。VBAの質問です。 アクセス2003 エクセル2003 不要な行・列がある場合の外部データ取り込みVBAを教えて下さい。 今は、エクセルで削除して取り込んでいます。 アクセスに「得意先リスト」というテーブルを作っています。 コード(テキスト型)主キー 名称(テキスト型) フリガナ(テキスト型) 郵便番号(テキスト型) 住所1(テキスト型) 住所2(テキスト型) TEL(テキスト型) FAX(テキスト型) エクセルブック[得意先リスト.xls] シートは「リスト形式」のみです。 1~4行は不要。 5行目が見出しです。 A~AZ列までデータがあります。 必要な列は、B・C・D・F・G・H・M・N列です。 セルの書式設定は「文字列」です。 [アクセス エクセル インポート 行 列 削除]などでサンプルVBAを探しましたが見つからなかったので質問させて頂きました。 申し訳ありませんが、教えて下さい。

  • 【Excel VBA】A列の全角・半角文字をチェック

    【Excel VBA】A列の全角・半角文字をチェック Excel VBAの初心者です。 仕事で必要なため、教えていただけると助かります。 【やりたいこと】 Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、 半角のみであること、または全角が入力されていないこと、を チェックしたいです。 半角以外の文字があった場合は、メッセージを表示します。 また、半角以外のセルがあった場合は、そのセルの色を水色にします。 入力チェックの方法は、ボタンにマクロを登録して、 そのボタンを押下することで行います。 以下に、僕が試したプログラムを記します。 アドバイスをいただけると幸いです。よろしくお願いします。 Sub 入力チェック() Dim cellValue As String Dim strANSI As String Dim i As Integer For i = 0 To 10 cellValue = Cells(1, i + 1) strANSI = StrConv(cellValue, vbFromUnicode) If Len(cellValue) = LenB(strANSI) Then MsgBox "セルは半角のみ" myColor = 8 Else MsgBox "セルの内容は全角のみ" End If MsgBox "セルの内容は全角と半角があり" Next i End Sub

  • odbcのデータソース追加について

    windows7homeで、odbcの設定のuser DSNで「追加」をおして、エクセルや、アクセスの データソースを追加したいのですが、SQL以外のソースがまったく出てきません。オフィス2007を2回ほどインストールしてみたのですがだめです。オフィスのソフトは普通に使えます。通常オフィスのソフトをインストールすると、odbcのuser DSNで「追加」で、データソースが出てくると思うのですが、なにかほかに方法はありますでしょうか?

専門家に質問してみよう