none
excelマクロについて RRS feed

  • 質問

  • excelマクロを使用して、csvファイルを読み込み、読み込んだcsvファイルを使用して、excelシートにcsvのデータを取り込むマクロを作成しています。

    読み込んだcsvファイルのファイル名を旨く取り込みができない状態です。

    対象方法を教えてください。

    よろしくお願いします。

    Sub 商品情報シート設定()
    '
    ' 値の設定 Macro

        Windows("" & Dir(OpenFileName) & "").Activate ①
        ActiveWindow.WindowState = xlNormal
       

    ①のOpenFileNameが、empty値になっているため、参照できない。
    csvファイルは、ファイルが表示されている状態です。

    以上

    2009年7月1日 1:44

回答

  • 他のSubプロシージャに値を引き渡す場合、大きく分けて2つの方法があります。

    ・Subプロシージャに引数として渡す
    ・Subプロシージャから、Functionプロシージャを呼び出し、その戻り値を受け取る

    現在のソースコードの変更を少なくするなら前者のほうが良いと思います。

    • 回答としてマーク tanuyoshi 2009年7月1日 4:29
    2009年7月1日 3:30

すべての返信

  • OpenFileNameは変数ですか?Functionですか?
    このマクロを見る限りでは、どこでも定義されていないようですが?

    簡単なCSVの読み込みであれば、以下のようなTipsが参考になるのではないでしょうか?
    http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040622.html
    2009年7月1日 1:55
  • 早速の回答有難うございます。
    >OpenFileNameは変数ですか?Functionですか?
    >このマクロを見る限りでは、どこでも定義されていないようですが?
    定義していませんでした。

    以下のように、今は、定義しています。
    csvreadで読み込んだ OpenFileName を、商品情報シート設定に受け渡す方法を教えて下さい。

    よろしくお願いします。


    Sub csvread()
            OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.csv")
        If OpenFileName <> "False" Then
            Workbooks.Open OpenFileName
        End If
        Call csvset
    End Sub
    Sub csvset()
        Call 商品情報シート設定
    End Sub
    Sub 商品情報シート設定()
    '
    ' 値の設定 Macro

        Windows("" & Dir(OpenFileName) & "").Activate 

    以上
    2009年7月1日 2:13
  • 他のSubプロシージャに値を引き渡す場合、大きく分けて2つの方法があります。

    ・Subプロシージャに引数として渡す
    ・Subプロシージャから、Functionプロシージャを呼び出し、その戻り値を受け取る

    現在のソースコードの変更を少なくするなら前者のほうが良いと思います。

    • 回答としてマーク tanuyoshi 2009年7月1日 4:29
    2009年7月1日 3:30
  • 回答有難うございました。

    >Subプロシージャに引数として渡す
    指摘されたSubプロシージャに引数を使用して確認できました。
    有難うございます。
    2009年7月1日 4:30