重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記VBAでコンパイルエラーを起こして進みません
解消法をご教授いただけると幸いです

やりたいこととしては
ボタンで任意のタブ区切りのテキストを指定し
特定のシートに値をコピーすることです

----
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim FileN As String
Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
FileN = Application.GetOpenFilename("テキストファイル,*.txt")
If FileN <> "False" Then
Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True
End If
Set Sh = Nothing
End Sub
----

A 回答 (4件)

#2、cjです。

#2、補足欄へのレスです。

' ' ----
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet
  Dim FileN As String

  Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※)
  FileN = Application.GetOpenFilename("テキストファイル,*.txt")
  If FileN <> "False" Then
    Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True
    ActiveSheet.Cells.CurrentRegion.Copy Destination:=Sh.Cells(Rows.Count, "A").End(xlUp).Offset(1)
    ActiveWorkbook.Close False
  End If
  Set Sh = Nothing
End Sub
' ' ----xl2010で動作確認済

原形を残して、2行追加するだけです。
シートの何処に出すか、判りませんので、とりあえず、A列を基準に最下行を採り、
最下行の一行下に出力する場合の例です。必要に合わせて応用してください。
(未使用の場合は2行め以下に出力します。)

同じ処理をするのに、方法は色々と(パッと思いつくだけでも5通り)ありますが、
テキストデータをそのまま貼るだけならば、この方法でも、
十分に一般的で、読む人に理解され易いい、と言えるもの、と私は思います。

因みに、
CommandButton1が、シート上に配置したActiveX コントロールだった場合は、
CommandButton1 のプロパティ TakeFocusOnClick を False に設定するのがベターです。
そうしておいた方が、何かとエラーが起き難くなります。
 デザインモード(三角定規みたいなアイコン)
 ↓
 CommandButton1を右クリック
 ↓
 プロパティ
 ↓
 TakeFocusOnClick を False
という手順です。

以上です。
    • good
    • 0
この回答へのお礼

修正いただいてありがとうございます!

少しアレンジを加えてやりたいことが実現できました!

お礼日時:2013/11/15 14:58

こんにちは、#1です。


理由は分からないようですが、エラーが出なくなったようで何よりです。

さて、前回回答時にはうっかりしていましたが、ご質問のマクロで「そのブックに」内容を読み込みたいんですね。
ヘルプを見てもらえば書いてあるんですが、Workbooks.OpenTextは
「テキスト ファイルを 1 枚のシートとして、それを含む新しいブックを開きます。」
とあるとおり、新しくファイルを開くメソッドです。
指定のシートにデータを読み込む場合には、開いたものをコピーしてもいいと思いますが、「QueryTables.Add」を使うほうが一般的かと思います。
こちらは QueryTable オブジェクトのパラメータが多くいきなり把握するのは難しいので、「マクロの記録」を使って「データ」>「テキストファイル」で開くマクロを記録し、それを元に組むといいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます

マクロの記録を使って「QueryTables.Add」を使ったやり方も探ってみます。

お礼日時:2013/11/15 14:59

こんにちは。



コンパイルエラー、ということなら見るだけで判る誤記、ということになりますが、
ご提示のプロシージャには、少なくともコンパイルエラーの原因はありません。
あるとすれば、プロシージャの前後に書かれた
----
ということになるのかと思います。
---------------------------
コンパイル エラー:

修正候補: 行番号 または 行ラベル または ステートメント または ステートメントの最後
---------------------------


対処としては、----を削除するか、
' ----
のように、コメントアウトするか、どちらかになります。

もし、これが原因でないとすれば、ご提示のプロシージャ以外の記述が
原因ということになります。

以上です。

この回答への補足

ご指摘ありがとうございます
改めて確認したところコンパイルエラーはありませんでした

ただ、TSVを開くことはできても
指定したシートに値が貼り付けらませんでした

これを解消したいです

補足日時:2013/11/15 09:21
    • good
    • 0

「どこで」「どんな」エラーが出たのか書かないと意味不明ですよ。


こちらでコピペしたら問題なく動きましたし。

この回答への補足

ご指摘ありがとうございます
おっしゃる通りですね

改めて確認したところコンパイルエラーはありませんでした

ただ、TSVを開くことはできても
指定したシートに値が貼り付けらませんでした

これを解消したいです

補足日時:2013/11/15 09:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!