エクセル取込 列指定でエラーが発生しました

このQ&Aのポイント
  • エクセル取込を行う際に、列指定でエラーが発生しました。A:M列だけならエラーはなく取り込めますが、O:V列も取り込みたいです。
  • N列を取り込みたくない理由として、混在した文字と数字を省きたいからです。
  • エクセルファイルからインポートする際、エラーが発生しましたが、解決策をお教えください。
回答を見る
  • ベストアンサー

ACCESS エクセル取込 列指定

下記のコードでエクセル取込を行おうと思いましたが、列指定をする"A:M, O:V"の箇所でエラーとなってしまいました。A:M列だけならエラーもなく取り込めますが、O:V列も取り込みたいです。 N列を取り込みたくない理由としては、文字と数字が混在していて、省きたいと思っております。 何か良い方法はございませんでしょうか? DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_SAPShohin", Path, True, "A:M, O:V" ←エラー ____________________________________________________________________ Private Sub SAPShohin_Click() Dim Path As String Dim Res As String WizHook.Key = 51488399 Res = WizHook.GetFileName(0, "", "", "", Path, "CurrentProject.Path", "(*.xlsx,*.xls)", 0, 0, 4, -1) If Res = 0 Then '取得したファイルパス(Path)でExcelからインポート DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_SAPShohin", Path, True, "A:M, O:V" Else '[キャンセル]ボタンが押された場合の処理 MsgBox "[キャンセル]ボタンが押されました。" Exit Sub End If MsgBox "インポートできました!"

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

途中が抜けているのを直接は無理っぽいですね。 別々にインポートしてあとから合体させるとか(面倒そうですが) または、以下のQ&Aにあるような方法でいかがですか。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1272643182

aoaoaoki
質問者

お礼

kkkkkmさん ありがとうございます。やはり無理そうですね。 リンク先から確認しましたが、不要列を削除してからインポートするようにいたします。 ありがとうございました。

関連するQ&A

  • ACCESS VBAでのインポート

    アクセスでエクセルのファイルをインポートするVBAを書いています。 まず、フォルダ内のファイル名を全て取得してコンボボックスで表示します。 そのコンボボックスからインポートするファイルを選択し、インポートします。 ところが、インポートしようとすると「実行時エラー'3011'」となり、オブジェクトが見つかりませんとなってしまいます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", Me.shimei_folder.Value & "\06.6.1氏名順.xls", True このように記述するとキチンとインポートするのですが、 path = Me.shimei_folder.Value & "\" & CStr(Me.shimei_combo.Value) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", path, True これだと3011エラーになってしまうのです。 エラー表示が「オブジェクト"06.6.16氏名順$"が見つかりません」となるのですが、.xlsが$になってしまうのが原因??とも思います。 コンボボックス上は「06.6.16氏名順.xls」と表示されているし、デバッグしてみてもMe.shimei_combo.Valueは「06.6.16氏名順.xls」なのですが・・・。 どなたか、解決方法がわかれば教えて下さい。 ちなみにACCESS、EXCELともに2000です。

  • EXCELファイルからACCESSへインポート

    質問させていただきます。 ACCESSのフォームから、EXCELファイルを選択してEXCELの内容を、 テーブルにインポートさせたいのですが。以下の方法で行って いるのですが、テーブルに反映されません。 Private Sub cmd_Import_Click() Dim InitialFileName As String Dim varTitle As Variant Dim FileName As String InitialFileName = "hoge.xls" varTitle = "ファイルを開く" FileName = GETHOGEOPEN(varTitle, InitialFileName) DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_HOGE", FileName, True DoCmd.SetWarnings True MsgBox "完了しました" End Sub ACCESS → ACCESS2003 SP3 EXCEL →EXCEL2003 SP3 よく見ると、すでにEXCELのバージョン指定が違う(汗) これが原因かも・・・・(汗) わかる方がいらっしゃったら教えてください。

  • アクセス(access)からエクセルにエクスポート

    アクセスから、エクセルにクエリのデータを出力する際に、 「TransferSpreadsheet」を使用していますが、 そのエラー処理について、教えて下さい。 保存しようとしているファイルが既に開かれている場合に、 処理を中止し、エラーメッセージを出したいのですが、 どのようにすればいいのでしょうか? なお、現在のVBAは次のとおりです。 Private Sub コマンド01_Click() Dim a As String Dim b As Variant a = "Q_一覧表" b = "C:\一覧表.xls" DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, a, b, True MsgBox "データを出力しました。" Exit Sub End Sub

  • [PG]AccessVBAでファイルのインポートする方法

    [PG]AccessVBAでファイルのインポートする方法 VBAでエクセルファイルのインポートする機能を実装しています。 下記のコードで実行しますと実行時エラー"3011"が表示され DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange で止まります。何か解決方法を教えていただけないでしょうか? Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String ' --- Accessテーブルを指定します。存在していなければ自動的に作成します。 varac = "tbl_売上げテーブル" ' ---Excelファイルを指定します。必ず、存在していなくてはいけません。 varxls = "C:\売上げ.xls" ' --- データ入力のシート名とセル範囲を指定します。 ' なお、省略が可能です。省略した場合は、ワークシート全体がインポートされます。 strrange = "売上げシート!A1:D10" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" ' --- DeleteObjectメソッドを用いて、tbl_売上げテーブルを削除します。 ' --- TransferSpreadsheetメソッドを用いてデータをインポートします。 DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange MsgBox "データ入力は、正常に完了しました。" End If Exit Function

  • Access VBA

    AccessからVBAを利用してダイアログ形式でExcelファイルのインポートをしたいです。 実行すると、 「このアクションまたはメソッドを実行するには、[File Name/ファイル名]引数が必要です。」 とエラーが出てしまいます。 標準モジュール —――――――――――――――――――――――――――――――――――― Function TestGetFileName() Const ENABLE_WIZHOOK = 51488399 Const DISABLE_WIZHOOK = 0 Dim strFile As String Dim intResult As Integer WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化 intResult = WizHook.GetFileName( _ 0, "", "", "", strFile, "", _ "xlsxファイル (*.xlsx)|*.*", _ 0, 0, 0, True _ ) WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化 TestGetFileName = strFile End Function —――――――――――――――――――――――――――――――――――― フォームのボタン押下時 —――――――――――――――――――――――――――――――――――― Public Sub コマンド0_Click() Dim s As String s = TestGetFileName If s = "" Or IsNull(s) Then Exit Sub DoCmd.TransferSpreadsheet acimport, 10, "取込B", strFileName, False, "注文TB!" MsgBox "インポートが終了しました。" End Sub —――――――――――――――――――――――――――――――――――― VBA自体かなりの初心者ですが、お知恵をお貸しください。

  • access97で作成したエクセルインポート機能がaccess2003で機能しません

    お世話になります。 下記ご経験ある方いらっしゃいましたら、教えていただけないでしょうか? Access97で開発されたあるシステムがあります。 これをAccess2003で使用したいと考えています。 データベースの変換は問題なく終了し、プログラムエラーも発生していないのですが、実行するとエクセルのインポートができていないことがわかりました。 ソースの該当箇所は以下のようになっています。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "Trtry", "\\jpn\test\マスタ.xls", True (ある共有フォルダ上で管理しているエクセルを読み込みます) 試してに"acSpreadsheetTypeExcel97"の部分を変更してみたところ、以下のような状況でした。 (1)"97"の部分を"5"~"9"に変更したところ、現象は回避せず。 (2)"97"の部分を"3"~"4"に変更したところ、インポートはできたが、文字化けが発生してしまう。 ここで行き詰ってしまい、困っております。 宜しくお願い致します。

  • エクセルVBA アクセスにインポート

    エクセルのデータ(列数、行タイトルは都度かわる)をアクセスにインポートしテーブルを作成したいと思っています。 VBAでこの処理をおこないたく、下記のコードで実行したのですがデバッグがはしってしまいます。 (DとEでデバッグ) 原因がお分かりになる方がおりましたら、教えていただけますでしょうか? 何卒、よろしくお願い申し上げます。 Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "T_TESTTABLE" ' --- A varxls = "C:\Users\AC\Desktop\ACTEST\RAWDATA.xlsx" ' ---B strrange = "TEST_RAWDATA" ' --- C strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" DoCmd.DeleteObject acTable, varac ' --- D If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange ' -- E MsgBox "データ入力は、正常に完了しました。" End If Exit Function エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & _ "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Function End Function

  • TransferSpreadsheetのエラー処理

    TransferSpreadsheetのエラー処理について ご教授お願いします。 TransferSpreadsheetで、エクセルファイルをインポートします。 その際、エクセルにシート保護(ブック保護)がかかっている 場合、読み取りができません。ここをエラー処理を表示させたいです。 現状では If MyName <> "." And MyName <> ".." Then ' ビット単位の比較で、MyName がファイルであるかどうか pu_strImfilename = MyName DoCmd.SetWarnings False '★★★ファイルインポートする DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, _ "wrk_Excelファイルインポート", sBuffer & "\" & MyName, True, "インポートの範囲" DoCmd.SetWarnings True End If としています。 実行すると、保護状態のエクセルブックのみ、 '3161'が表示されます。どうぞよろしくお願いします。

  • ゾンビエクセル・・・(ExcelVBA)

    ExcelのVBAからAccessを起動し、エクセルファイルのインポートを行っています。 この処理を行うと、その後エクセルを閉じてもプロセスにエクセルが残ってしまいます。 なぜこうなってしまうのか判りません。よろしかったら教えてください(><) 一応コードを書いてみます。TransferSpreadsheetのコードを実行しない場合はゾンビエクセルは残らないので、それが原因だとは思うのですが他の方法がわかりません。 よろしくお願いいたします。 Dim appAccess As Object Dim acImport, fname As String, ffname As String acImport = "acImport" fname = ThisWorkbook.Path & "\取込.mdb" ffname = ThisWorkbook.FullName Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase fname appAccess.DoCmd.TransferSpreadsheet , 8, _ "torikomi", ffname, True, "torikomi" Set appAccess = Nothing

  • エクセルからアクセスにインポートする際のエラーについて

    こんにちは。 エクセルで作成された従業員台帳を、アクセスにインポートしたいのですが、エラーが出て困っています。 インポートの為のフォームを作り、参照ボタンでそのエクセルファイルを選択してフルパスを取得し(こちらの動作はOKです)、実行ボタンでそのファイルをインポートする、という方法をとろうと思います。 transferspreadsheet で、エクセルのファイル(.xls)は問題なくいくのですが、csv形式のファイルを指定して同じようにインポートすると、 実行時エラー 3274 外部テーブルのフォーマットが正しくありません。 となってしまいます。 書いているコードは、 DoCmd.TransferSpreadsheet acImport, 8, "従業員台帳(アクセス側でのテーブルの名前)", "上記画面で取得したフルパス", True(一番上の項目をフィールド名として使用します), "" です。.xlsでも.csvの形式でもインポートできるようにしたいのです。 環境は、winXPpro、Access2000、Excel2000 です。 よろしくお願いします。

専門家に質問してみよう